Очень простая проблема не может быть решена с помощью ANN? Tensorflow Neural Net, Искусственный интеллект - PullRequest
0 голосов
/ 03 апреля 2020

Я не понимаю, почему эта чрезвычайно простая проблема ввода-вывода не может быть изучена следующим ANN. Я предполагаю, что в моем коде есть ошибка, но я ее не нахожу.

X = np.array([[ 1.,  1., -1.,  1.],
              [ 1.,  1.,  1.,  1.],
              [ 1.,  1.,  1.,  1.]])

Y = np.array([[ 1.,  1., -5.,  1.],
              [ 1.,  1.,  1.,  1.],
              [ 1.,  1.,  1.,  1.]])



model = Sequential()
model.add(Dense(4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(4, activation='softmax'))
model.compile(loss='mse', optimizer='adam', metrics=['acc'])

erg = model.fit(X,Y, epochs=10, batch_size=1, verbose=1)

Вывод:

Epoch 1/10
3/3 [==============================] - 1s 171ms/step - loss: 2.8014 - acc: 0.0000e+00
Epoch 2/10
3/3 [==============================] - 0s 3ms/step - loss: 2.7997 - acc: 0.0000e+00
Epoch 3/10
3/3 [==============================] - 0s 4ms/step - loss: 2.7962 - acc: 0.0000e+00
Epoch 4/10
3/3 [==============================] - 0s 4ms/step - loss: 2.7944 - acc: 0.0000e+00
Epoch 5/10
3/3 [==============================] - 0s 3ms/step - loss: 2.7907 - acc: 0.0000e+00
Epoch 6/10
3/3 [==============================] - 0s 2ms/step - loss: 2.7880 - acc: 0.0000e+00
Epoch 7/10
3/3 [==============================] - 0s 3ms/step - loss: 2.7852 - acc: 0.0000e+00
Epoch 8/10
3/3 [==============================] - 0s 3ms/step - loss: 2.7842 - acc: 0.0000e+00
Epoch 9/10
3/3 [==============================] - 0s 4ms/step - loss: 2.7801 - acc: 0.0000e+00
Epoch 10/10
3/3 [==============================] - 0s 4ms/step - loss: 2.7769 - acc: 0.0000e+00

Изменение параметров net не помогает , Так что я делаю не так? Потому что эту «проблему» невероятно легко решить - я ее не понимаю.

1 Ответ

1 голос
/ 03 апреля 2020

Подобно тому, как Матиас упомянул, что вы используете активацию softmax в последнем слое, и ее нельзя использовать для получения результатов в вашем наборе данных, потому что активация softmax полезна в качестве активации в выходном слое, только когда некоторые цели набора данных являются вид вероятностей. Использование линейного вместо softmax должно помочь.

model.add(Dense(4, activation='linear'))

...