tf.one_hot()
[0,0,0]
可能なカテゴリ値の3番目のクラスのベクトルを生成しています。
私は期待し[1,0,0]
ます。この関数の何が問題になっていますか?
ワンホットエンコードしたい3つの可能なカテゴリクラスがあります。1,2,3を使用しtf.one_hot()
ます。
例:
# 3 possible classes
print(df['sent_score'].unique())
# array([1., 2., 3.])
#original
labels1 = np.asarray(df['sent_score'])
print("Original Labels \n", labels1[25:30])
# Original Labels
# [2. 1. 2. 1. 3.]
# one hot encoded
labels = tf.one_hot(labels1, 3)
print("\nOne Hot labels \n", labels[25:30])
# One Hot labels
# [[0. 0. 1.]
# [0. 1. 0.]
# [0. 0. 1.]
# [0. 1. 0.]
# [0. 0. 0.]] ##WHY IS THIS VECTOR is [0,0,0] and not [1,0,0]
問題は、クラスとしてtf.one_hot
も考慮0
するためです。ラベルが1〜3の場合、ラベルに渡されるtf.one_hot
と、3
クラスが0
sで埋められます。
簡単な例:
indices = [0, 1, 2]
tf.one_hot(indices, 3)
# <tf.Tensor: shape=(3, 3), dtype=float32, numpy=
# array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]], dtype=float32)>
indices = [0, 1, 2, 3]
tf.one_hot(indices, 3)
# array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.],
# [0., 0., 0.]], dtype=float32)>
したがって、クラスを0〜2の範囲に変更してから、クラスをに渡す必要があります。 tf.one_hot
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加