Ошибка присвоения значения тензора — проблема размерности

#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. Рад, что это было полезно. Подумайте о том, чтобы нажать кнопку ‘принять этот ответ’