Trenowałem prosty model MLP za pomocą nowej wersji {x0}} 2.2.4-tf. Oto jak wygląda model:

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

Otrzymuję błąd, gdy próbuję zrobić przewidywanie prediction_result = model.predict(test_data, batch_size=138). test_data ma kształt (69, 28), więc jest mniejszy niż batch_size, który ma 138. Oto błąd, wydaje się, że problem pochodzi z pierwszej warstwy Dropout:

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]

To samo rozwiązanie działa bez problemów w starszej wersji Keras (2.2.4) i Tensorflow (1.12.0). Jak mogę rozwiązać problem? Nie mam więcej danych do testu, więc nie mogę zmienić zestawu testów Test_data, aby mieć więcej punktów danych!

0
Birish 22 marzec 2020, 23:30

1 odpowiedź

Najlepsza odpowiedź

Ponieważ widzisz problem w czasie przewidywania, jeden sposób na poruszanie się tego byłoby ochronę danych testowych, aby była wielokrotnością rozmiaru partii. Nie powinno spowalniać przewidywania, ponieważ liczba partii nie zmienia się. numpy.pad powinien zrobić sztuczkę.

1
Douwe Osinga 22 marzec 2020, 21:16