#tensorflow
#тензорный поток
Вопрос:
Я пишу код на Python, визуализирующий вывод уровня ConvNet. Кажется, что все в порядке, но я получаю ошибку преобразования размеров, как показано ниже, при вызове функции sess.run.
Ошибка значения: не удается передать значение формы (128, 128, 3) для тензора ‘image-in:0’, который имеет форму ‘(?, 128, 128, 3)’
loaded_graph = tf.Graph()
image_to_use = train_images[0]
print(image_to_use.shape) # (128, 128, 3)
with tf.Session(graph=loaded_graph) as sess:
# Load model
loader = tf.train.import_meta_graph(save_model_path ".meta")
loader.restore(sess, save_model_path)
# Get Tensors from loaded model
hidden_layer_1 = loaded_graph.get_tensor_by_name("hidden-layer-1:0")
keep_prob_tf = tf.placeholder(tf.float32, name="keep-prob-in")
image_in_tf = tf.placeholder(tf.float32, [None, image_to_use.shape[0], image_to_use.shape[1], image_to_use.shape[2]], name="image-in")
units = sess.run(hidden_layer_1, feed_dict={image_in_tf:image_to_use, keep_prob_tf:1.0})
Ошибка значения: не удается передать значение формы (128, 128, 3) для тензора ‘image-in:0’, который имеет форму ‘(?, 128, 128, 3)’
Ответ №1:
У вас проблема в этой строке
image_to_use = train_images[0]
где image_to_use
имеет размерность (128, 128, 3)
.
Измените его на это:
image_to_use = np.asarray([train_images[0]])
Теперь image_to_use
имеет форму (1, 128, 128, 3)
, и она будет совместима с ожидаемой формой (?, 128, 128, 3)
.
Кроме того, определите форму вашего image_in_tf
заполнителя следующим образом:
image_in_tf = tf.placeholder(tf.float32, (None, ) image_to_use[0].shape)
В противном случае он примет неправильные размеры в текущем формате вашего кода (мы изменили первые размеры).
Комментарии:
1. Спасибо за вашу помощь. Ценю это.
2. Рад, что это было полезно. Подумайте о том, чтобы нажать кнопку ‘принять этот ответ’