TensorFlow MNISTの例を変更しようとしています。その結果を生成する前に、プレースホルダーの入力値が操作のために変数に渡されます。例えばTensorflow - プレースホルダーの値を変数に割り当てる
:上記の例で
import tensorflow as tf
# create placeholder/weights/biases
input_x = tf.placeholder(tf.float32, [None, 784])
input_W = tf.Variable(tf.zeros([784, 10]))
input_b = tf.Variable(tf.zeros([10]))
# Create the new variable
var_x = tf.Variable(tf.zeros([784]), trainable=False)
# Perform an arbitrary manipulation on MNIST input, and assign to var_x
for i in range(0,784):
var_x[i].assign(input_x[i]/2)
input_Y = tf.matmul(var_x, input_W) + input_b
、私は、出力結果を得るために重みを掛ける前に、値を任意の操作を行うことができるvar_Xへinput_Xプレースホルダの値を渡しています。私はtf.matmulに次のエラー取得しています
:
tf.matmul(input_x, input_W) + input_b
をしかし、これはそうではない:
ValueError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') with input shapes: [784], [784,10].
を私は混乱している理由は、上記の例では、これは動作します:
tf.matmul(var_x, input_W) _ input_b
input_xとvar_xの両方が784長さベクトルである必要があります。
私は基本的には、通常のMNISTの例では、プレースホルダーではなく変数を使用するのとまったく同じ行列乗算をしたいと考えています。
私はTensorFlowを初めて使い慣れているようですが、多くのチュートリアル/ SOの質問を読んでいるにもかかわらず、私はこの特定のシナリオをどこにも見たことがありません。
ご協力いただきありがとうございます。
感謝をプレースホルダではなく変数を使用したい場合は、
を言うことができ、それがあるようなコードの残りの部分を残して、申し訳ありませんそれは明らかではなかった。私は、通常のようにプレースホルダに数字をロードしたいが、結果を計算する前に値を操作する必要がある。 – inkbleed
申し訳ありませんが、私のコメントは切り捨てられます。 私は次のものを追加したいと思います: 上記の例では、プレースホルダに値を与え、それらを半分にしています。同様に、プレースホルダの値を取って組み合わせるか、平均化するなどしたいかもしれません。最終的には複数の変数でこれをやりたいので、input_xは更新された/ matmulされた変数とは別にする必要があります。 これはより明確です。Cheers – inkbleed
Mmm、その場合、グラフに入力する前にnumpyを使ってこの操作を実行してみませんか? – rmeertens