Я только начинаю работать с Keras, поэтому я подумал, что постараюсь сделать самые простые проблемы регрессии, которые я могу себе представить, как своего рода Hello World.
Я пытаюсь обучить модель, которая выводит двойные входные данные. Я предполагаю, что сеть с двумя узлами (1 вход 1 выход) без функции активации должна сделать свое дело. Вес должен просто сходиться к 2.
Это мой код:
layers = keras.layers
# Feed forward structure
model = keras.Sequential()
model.add(layers.Dense(1))
model.add(layers.Dense(1))
model.compile(optimizer=tf.train.AdamOptimizer(0.01),
loss='mae',
metrics=['mae'])
train_data = np.asarray([x for x in range(100)])
train_labels = np.asarray([x * 2 for x in train_data])
model.fit(train_data, train_labels, epochs=50, batch_size=32)
Однако, когда я передаю ему одномерный массив, он вылетает со следующей ошибкой:
ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
Если я затем добавлю лишнюю скобку к train_data
, она скомпилируется (не сходясь):
train_data = np.asarray([[x for x in range(100)]])
Epoch 50/50
1/1 [==============================] - 0s 705us/step - loss: 50.0463 - mean_absolute_error: 50.0463