Я пытаюсь изменить пример TensorFlow MNIST, чтобы входные значения заполнителя передавались в переменную для обработки перед созданием результатов.
Например:
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
В приведенном выше примере я передаю значения-заполнители input_X в var_X, где я могу выполнять произвольные манипуляции со значениями перед умножением на веса для получения выходного результата.
Я получаю следующую ошибку на tf.matmul:
ValueError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') with input shapes: [784], [784,10].
Я смущен, почему в приведенном выше примере это работает:
tf.matmul(input_x, input_W) + input_b
но это не так:
tf.matmul(var_x, input_W) _ input_b
Поскольку и input_x, и var_x должны быть вектором длины 784.
По сути, я хочу, чтобы это было точно такое же умножение матриц, как в обычном примере MNIST, но с использованием переменной, а не заполнителя.
Кажется, это должно быть очень прямолинейно, однако я новичок в TensorFlow, и, несмотря на то, что я прочитал много руководств/вопросов SO, я нигде раньше не видел этот конкретный сценарий.
Спасибо заранее за любые предложения!