Сбой model.prediction () из-за несоответствия форм - PullRequest
0 голосов
/ 22 марта 2020

Я обучил простую модель MLP, используя новую tf.keras версию 2.2.4-tf. Вот как выглядит модель:

input_layer = Input(batch_shape=(138, 28))
first_layer = Dense(30, activation=activation, name="first_dense_layer_1")(input_layer)
first_layer = Dropout(0.1)(first_layer, training=True)
second_layer = Dense(15, activation=activation, name="second_dense_layer")(first_layer)
out = Dense(1, name='output_layer')(second_layer)
model = Model(input_layer, out)

enter image description here

Я получаю ошибку, когда пытаюсь сделать прогноз prediction_result = model.predict(test_data, batch_size=138). test_data имеет форму (69, 28), поэтому он меньше, чем batch_size, что составляет 138. Вот ошибка, похоже, проблема связана с первым выпадающим слоем:

tensorflow.python.framework.errors_impl.InvalidArgumentError:  Incompatible shapes: [138,30] vs. [69,30]
     [[node model/dropout/dropout/mul_1 (defined at ./mlp_new_tf.py:471) ]] [Op:__inference_distributed_function_1700]

То же решение работает без проблем в более старой версии keras (2.2.4) и tenorflow (1.12.0). Как я могу исправить проблему? У меня нет больше данных для теста, поэтому я не могу изменить набор test_data, чтобы иметь больше точек данных!

1 Ответ

1 голос
/ 23 марта 2020

Поскольку вы видите проблему во время прогнозирования, одним из способов решения этой проблемы будет добавление тестовых данных, кратных размеру пакета. Это не должно замедлять прогноз, так как количество партий не меняется. numpy .pad должен сделать свое дело.

...