繁体   English   中英

深度神经网络不学习任何东西

[英]Deep Neural Network Not Learning Anything

我正在训练一个带有一些 Dense 和 Dropout 层的简单神经网络。 但是在运行 fit 函数时,不会进行任何训练。 我的模型是:

import tensorflow as tf
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.models import Sequential

Model = Sequential()

Model.add(Dense(32, input_dim=12, activation='relu'))

for i in range(4):
    Model.add(Dense(2**(5+i), activation='relu'))
    Model.add(Dropout(0.5))

Model.add(Dense(1, activation='softmax'))

Model.summary()

Model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=0.1),
    loss=tf.keras.losses.BinaryCrossentropy(),
    metrics=[tf.keras.metrics.Accuracy()]
)
my_callbacks = [
    tf.keras.callbacks.EarlyStopping(patience=2),
]
Model.fit(x=X, y=Y, batch_size=32, epochs=20, verbose=1, validation_split=0.1, callbacks=my_callbacks)

培训结果如下:

Epoch 1/20
26/26 [==============================] - 0s 5ms/step - loss: 9.3856 - accuracy: 0.3845 - val_loss: 9.4884 - val_accuracy: 0.3778
Epoch 2/20
26/26 [==============================] - 0s 3ms/step - loss: 9.3856 - accuracy: 0.3845 - val_loss: 9.4884 - val_accuracy: 0.3778
Epoch 3/20
26/26 [==============================] - 0s 3ms/step - loss: 9.3856 - accuracy: 0.3845 - val_loss: 9.4884 - val_accuracy: 0.3778
<tensorflow.python.keras.callbacks.History at 0x7f94a623ffd0>

我试图看看模型预测的是什么:

Model.predict(X)[:10]

结果:

array([[1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.]], dtype=float32)

依此类推(所有预测均为 1.0)。

我的输入数据帧是:

X.head(5)
    0            1           2           3           4           5           6           7           8           9           10          11
0   -0.572351   -0.518084   0.919925    -0.743497   0.743497    -0.50977    -0.32204    0.655011    -0.611972   0.481288    -0.445  -0.503402
1   1.747178    -0.518084   -1.087045   1.344995    -1.344995   1.96167     -0.32204    -1.526692   0.630431    0.481288    -0.445  0.734222
2   -0.572351   -0.518084   0.919925    1.344995    -1.344995   -0.50977    -0.32204    0.655011    -0.301371   -0.479087   -0.445  -0.490356
3   1.747178    -0.518084   -1.087045   1.344995    -1.344995   -0.50977    -0.32204    0.655011    0.397481    0.481288    -0.445  0.382778
4   -0.572351   -0.518084   0.919925    -0.743497   0.743497    -0.50977    -0.32204    0.655011    0.397481    -0.479087   -0.445  -0.487940

Y.头(10):

0    0
1    1
2    1
3    1
4    0
5    0
6    0
7    0
8    1
9    1
Name: Survived, dtype: int64

我不明白我在做什么错误。

如果您只有 1 个具有 2 个可能性的输出神经元,请使用 sigmoid 激活函数。 如果您想使用 softmax,请使用 2 个输出神经元和一个热编码您的答案,例如:[0,1] 或 [1,0]

这个问题在这里解释: https : //mc.ai/softmax-output-neurons-number-for-binary-classification/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM