TensorFlowを学習し、layer_perceptronモデルを構築しています。次のような例を探しています: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/multilayer_perceptron.ipynb
次に、以下のコードにいくつか質問があります。
def multilayer_perceptron(x, weights, biases):
:
:
pred = multilayer_perceptron(x, weights, biases)
:
:
with tf.Session() as sess:
sess.run(init)
:
correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
print ("Accuracy:", accuracy.eval({x: X_test, y: y_test_onehot}))
tf.argmax(prod,1)
とtf.argmax(y,1)
はどういう意味で、(型と値)を正確に返しますか? correct_prediction
は実際の値ではなく変数ですか?
最後に、tfセッションからy_test_prediction
配列(入力データがX_test
の場合の予測結果)を取得するにはどうすればよいですか?どうもありがとう!
tf.argmax(input, axis=None, name=None, dimension=None)
テンソルの軸全体で最大値を持つインデックスを返します。
入力はテンソルであり、軸は入力テンソルのどの軸を横切るかを示します。ベクトルの場合、axis = 0を使用します。
特定のケースでは、2つの配列を使用してこれを実証しましょう
pred = np.array([[31, 23, 4, 24, 27, 34],
[18, 3, 25, 0, 6, 35],
[28, 14, 33, 22, 20, 8],
[13, 30, 21, 19, 7, 9],
[16, 1, 26, 32, 2, 29],
[17, 12, 5, 11, 10, 15]])
y = np.array([[31, 23, 4, 24, 27, 34],
[18, 3, 25, 0, 6, 35],
[28, 14, 33, 22, 20, 8],
[13, 30, 21, 19, 7, 9],
[16, 1, 26, 32, 2, 29],
[17, 12, 5, 11, 10, 15]])
tf.argmax(pred, 1)
を評価すると、その評価がarray([5, 5, 2, 1, 3, 0])
を与えるテンソルが得られます
tf.argmax(y, 1)
を評価すると、その評価がarray([5, 5, 2, 1, 3, 0])
を与えるテンソルが得られます
tf.equal(x, y, name=None) takes two tensors(x and y) as inputs and returns the truth value of (x == y) element-wise.
この例に従って、tf.equal(tf.argmax(pred, 1),tf.argmax(y, 1))
は、評価がarray(1,1,1,1,1,1)
を与えるテンソルを返します。
correct_predictionはテンソルで、その評価により0と1の1次元配列が得られます
y_test_predictionは、pred = tf.argmax(logits, 1)
を実行することで取得できます
Tf.argmaxおよびtf.equalのドキュメントには、以下のリンクからアクセスできます。
tf.argmax() https://www.tensorflow.org/api_docs/python/math_ops/sequence_comparison_and_indexing#argmax
ドキュメントを読む:
テンソルの軸全体で最大値を持つインデックスを返します。
(x == y)の要素ごとの真理値を返します。
テンソルを新しい型にキャストします。
テンソルの次元全体の要素の平均を計算します。
これで、その機能を簡単に説明できます。 y
はワンホットエンコードされているため、1が1で、その他はすべてゼロです。 pred
は、クラスの確率を表します。したがって、argmaxは最適な予測と正しい値の位置を見つけます。その後、それらが同じかどうかを確認します。
したがって、correct_prediction
は、予測するインスタンスの数に等しいサイズのTrue/False値のベクトルになります。あなたはそれをフロートに変換し、平均を取る。
実際、この部分は、モデルの評価部分の TFチュートリアル でうまく説明されています
tf.argmax(input、axis = None、name = None、dimension = None)
テンソルの軸全体で最大値を持つインデックスを返します。
特定のケースでは、pred
の引数としてinput
とaxis
として1
を受け取ります。軸は、入力Tensorのどの軸を横切るかを示します。ベクトルの場合、axis = 0を使用します。
例:与えられたリスト[2.11,1.0021,3.99,4.32]
argmaxは、最高値のインデックスである3
を返します。
correct_predictionは、後で評価されるテンソルです。通常のpython変数ではありません。後で値を計算するために必要な情報が含まれています。この特定のケースでは、それは別のテンソルaccuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
の一部となり、accuracy.eval({x: X_test, y: y_test_onehot})
上のeval
によって評価されます。
y_test_predictionは、correct_prediction
テンソルでなければなりません。