Я хочу изменить тензор, используя обозначение [int, -1] (например, для сглаживания изображения). Но я не знаю первого измерения раньше времени. Один вариант использования - поезд на большой партии, затем оценка на меньшую партию.Измените тензор, используя значение-заполнитель
Зачем возникает следующая ошибка: got list containing Tensors of type '_Message'
?
import tensorflow as tf
import numpy as np
x = tf.placeholder(tf.float32, shape=[None, 28, 28])
batch_size = tf.placeholder(tf.int32)
def reshape(_batch_size):
return tf.reshape(x, [_batch_size, -1])
reshaped = reshape(batch_size)
with tf.Session() as sess:
sess.run([reshaped], feed_dict={x: np.random.rand(100, 28, 28), batch_size: 100})
# Evaluate
sess.run([reshaped], feed_dict={x: np.random.rand(8, 28, 28), batch_size: 8})
Примечание: если у меня есть RESHAPE вне функции она, кажется, работает, но у меня есть очень большие модели, которые я использую несколько раз, так что мне нужно, чтобы держать их в функцию и передать тусклым используя аргумент.
У меня возникли проблемы с использованием tf.pack() позже по течению. 'x = reshape (100)' больше не позволяет мне делать 'x.get_shape(). as_list() [- 1]'. Он говорит, что Nonetype не является итерируемым, поэтому он теряет информацию о форме. Есть какие-либо комментарии по этому поводу? – jstaker7
Попробуйте указать 'shape =()', когда вы определяете свой 'batch_size' placeholder. Вы также можете использовать 'Tensor.set_shape()' для предоставления дополнительной информации о форме, которая не выводится, если вы позже положитесь на нее. – mrry
Отлично, спасибо! – jstaker7