Я пытаюсь поэкспериментировать с простой моделью TensorFlow, построенной с использованием керас, но не могу понять, почему у меня такие плохие прогнозы. Вот модель:
x_train = np.asarray([[.5], [1.0], [.4], [5], [25]])
y_train = np.asarray([.25, .5, .2, 2.5, 12.5])
opt = keras.optimizers.Adam(lr=0.01)
model = Sequential()
model.add(Dense(1, activation="relu", input_shape=(x_train.shape[1:])))
model.add(Dense(9, activation="relu"))
model.add(Dense(1, activation="relu"))
model.compile(loss='mean_squared_error', optimizer=opt, metrics=['mean_squared_error'])
model.fit(x_train, y_train, shuffle=True, epochs=10)
print(model.predict(np.asarray([[5]])))
Как видите, он должен научиться делить ввод на два. Однако потеря составляет 32.5705
, и в течение нескольких эпох она отказывается что-либо менять (даже если я делаю что-то сумасшедшее, например, 100 эпох, это всегда потеря). Есть ли что-нибудь, что вы можете видеть, что я делаю ужасно неправильно здесь? Прогноз для любого значения кажется 0.
.
Кажется также, что происходит случайное переключение между выполнением, как ожидалось, и странным поведением, описанным выше. Я перезапустил его и получил потерю 0.0019
после 200 эпох, но если я перезапущу его с теми же параметрами через секунду, потеря останется равной 30, как и раньше. Что здесь происходит?