Почему я должен изменить форму `input` из`tf.train.batch()`, чтобы использовать с`slim.fully_connected()?

Почему я получаю эту ошибку для slim.fully_connected()?

ValueError: Input 0 of layer fc1 is incompatible with the layer: : expected min_ndim=2, found ndim=1. Full shape received: [32]

мой вклад Tensor("batch:0", shape=(32,), dtype=float32) от tf.train.batch()

  inputs, labels = tf.train.batch(
        [input, label],
        batch_size=batch_size,
        num_threads=1,
        capacity=2 * batch_size)

если я изменить форму ввода в (32,1) это работает отлично.

inputs, targets = load_batch(train_dataset)
print("inputs:", inputs, "targets:", targets)
# inputs: Tensor("batch:0", shape=(32,), dtype=float32) targets: Tensor("batch:1", shape=(32,), dtype=float32)

inputs = tf.reshape(inputs, [-1,1])
targets = tf.reshape(targets, [-1,1])

Примеры в тонком прохождении, кажется, работают без явного изменения после load_batch()

1 ответ

tf.train.batch ожидает массив, как входные данные, потому что скаляры довольно редки (практически говоря). Итак, вы должны изменить свой вклад. Я думаю, что следующий фрагмент кода прояснит ситуацию.

>>> import numpy as np
>>> a = np.array([1,2,3,4])
>>> a.shape
(4,)
>>> a = np.reshape(a,[4,1])
>>> a
array([[1],
       [2],
       [3],
       [4]])
>>>  
Другие вопросы по тегам