0

エンコードしたいデータは次のようになります。

print (train['labels'])

[ 0 0 0 ..., 42 42 42]

0 から 42 までの 43 のクラスがあります。

今、バージョン 0.8 の tensorflow には 1 つのホット エンコーディング用の新しい機能があることを読んだので、次のように使用しようとしました。

trainhot=tf.one_hot(train['labels'], 43, on_value=1, off_value=0)

唯一の問題は、出力が必要なものではないと思うことです

print (trainhot[1])

Tensor("strided_slice:0", shape=(43,), dtype=int32)

誰かが私を正しい方向に動かしてくれませんか:)

4

1 に答える 1

0

出力は正しく、期待どおりです。trainhot[1] は、2 番目の (0 ベースのインデックス) トレーニング サンプルのラベルであり、1D 形状 (43,) です。以下のコードで遊んで、tf.one_hot をよりよく理解できます。

  onehot = tf.one_hot([0, 0, 41, 42], 43, on_value=1, off_value=0)                  
  with tf.Session() as sess:                                                        
    onehot_v = sess.run(onehot)                                                  
  print("v: ", onehot_v)                                                            
  print("v shape: ", onehot_v.shape)                                                
  print("v[1] shape: ", onehot[1])

output:
v:  [[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0]
 [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 1 0]
 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 1]]
v shape:  (4, 43)
v[1] shape:  Tensor("strided_slice:0", shape=(43,), dtype=int32)
于 2016-12-27T05:42:52.713 に答える