onehotコードとは


このような大きな名前は、その名の通り、符号化には1つしかなく、他は0である.見覚えがあるでしょう.Pytonニューラルネットワークプログラミングという本では、もう見たことがあります.ニューラルネットワークの出力は,10,000,000,000で0,010,000で1,000,000で9を表す.tf.one_hot()関数は、inputをone-hotタイプのデータ出力に変換することであり、複数の数値を組み合わせて複数の同じタイプのベクトルとして配置することに相当し、それぞれの確率分布を表すために用いることができ、通常は分類タスクにおける最後のFC層の出力として用いられ、時には「独熱」符号化に翻訳されることがある.tensorflowのhelpでは、one_hot(indices,depth,on_value=None,off_value=None,axis=None,dtype=None,name=None)indicesは入力された複数の数値を表し、通常はマトリクス形式である.depthは出力のサイズを表します.one-hotタイプのデータ長はdepthビットであるため、元の入力データを1桁の数字で表すだけで、ここでon_valueはこの数字で、デフォルト値は1で、one-hotデータの他のビットはoff_を使いますvalueは、デフォルト値が0であることを示します.tf.one_hot()関数は、入力された要素indicesが0から始まることを規定し、最大の要素値は(depth-1)を超えてはならないので、(depth+1)単位の入力を表すことができる.入力された要素値が範囲外である場合、出力の符号化はいずれも[0,0...0,0]である.indices=0に対応する出力は[1,0...0,0]、indices=1に対応する出力は[0,1...0,0]であり、順次類推され、最大可能値の出力は[0,0...0,1]である.コードの例は次のとおりです.
    import tensorflow as tf
    import numpy as np
    t=[0,1,2,3,4]#onehot 
    #indices, depth, on_value=None, off_value=None, axis=None, dtype=None
    indices=t
    depth=5# t 
    sess=tf.Session()
    on_value=1# 1, , 9
    off_value=0# 0, , 2
    axis=0# 0, ,0 ,1 , 
    oh1=tf.one_hot(t,depth=depth,axis=axis)
    oh2=tf.one_hot(t,depth=depth,axis=axis,on_value=9,off_value=2)
    print(sess.run(oh1))
    print(sess.run(oh2))

出力結果リンククリック