Tensorflow Extra Не требуется измерение для модели - PullRequest
0 голосов
/ 20 февраля 2020

вот моя модель:

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(40, 40, 3)),
  tf.keras.layers.Dense(150, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

и мой входной тензор называется image_batch. когда я запускаю np.shape(image_batch[0]), результат равен TensorShape([40, 40, 3]). Это ожидаемое поведение, поскольку каждый обучающий пример имеет размер 40x40x3 и его изображение rgb). Однако, когда я запускаю команду predictions = model(image_batch[0]).numpy(), чтобы получить предсказания модели, я получаю ошибку:

WARNING:tensorflow:Model was constructed with shape Tensor("flatten_1_input:0", shape=(None, 40, 40, 3), dtype=float32) for input (None, 40, 40, 3), but it was re-called on a Tensor with incompatible shape (40, 40, 3).

Так что мой вопрос - почему модель keras ожидает фигуру с дополнительным "None"? размер, и как я могу предоставить его для модели?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

None - размер партии. Это установлено как Нет, потому что это может измениться. Вы можете использовать пакет размером 512 во время обучения, а затем использовать прогноз размера 1, например, для прогнозирования.

2 голосов
/ 20 февраля 2020

Размер None - это размер партии. Другими словами, вход должен иметь форму (batch_size, height, width, num_channels).

Если вы хотите прогнозировать на одном входе, измените model(image_batch[0]).numpy() на model(image_batch[0:1]).numpy(). Это сохранит первое измерение. В этом случае форма будет (1, 40, 40, 3).

...