カテゴリーエンコーダー

Category Encoder

入力のカテゴリをエンコードするには、ScalarEncoderまたはRandom Distributed Scalar Encoder (RDSE)を作成し、パラメータ category=True を設定します。

そして、エンコードする前にカテゴリを整数に列挙します。

簡単のため、カテゴリーの各要素の順番を数値に置き換えて、実際にやってみましょう。要素0は"unknown"のために予約しておきます。

ここではスカラーエンコーダーよ使用します。パラメーターのカテゴリーを True で指定します。パラメータの最小値と最大値によってカテゴリーの数が決定されます。

python3
from htm.bindings.encoders import ScalarEncoder, ScalarEncoderParameters
from htm.bindings.sdr import SDR

categories = ("unknown","cat", "dog", "monkey", "slow loris")

scalarEncoderParams = ScalarEncoderParameters()
scalarEncoderParams.minimum = 0
scalarEncoderParams.maximum = 5
scalarEncoderParams.activeBits = 3
scalarEncoderParams.category = True

enc = ScalarEncoder(scalarEncoderParams)

エンコーダーのパラメータの指定ができました。カテゴリーの要素に合わせた数値をエンコードします。

python3
print ("cat =       ", enc.encode(1))
print ("dog =       ", enc.encode(2))
print ("monkey =    ", enc.encode(3))
print ("slow loris =", enc.encode(4))

エンコードされたSDRは以下のようになります。パラメータの最小値と最大値、そしてオンビット数を指定したので自動的にSDRサイズがエンコードされます。

各カテゴリーをまとめたSDRを可視化してみます。

図3-4

Numpy配列に形式を変換してみます。

最終更新