Jac*_*cob 1 python machine-learning neural-network keras tensorflow
我试图用威斯康星州乳腺癌学习我的神经网络
(我添加"id"
列作为索引并将"diagnosis"
列更改为 0 和 1 sklearn.preprocessing.LabelEncoder
),但我的神经网络并没有减少损失。
我尝试了其他优化器和损失,但这不起作用。
那是我的神经网络:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, BatchNormalization, InputLayer
import tensorflow.nn as tfnn
model = Sequential()
model.add(Dense(30, activation = tfnn.relu, input_dim = 30))
model.add(BatchNormalization(axis = 1))
model.add(Dense(60, activation = tfnn.relu))
model.add(BatchNormalization(axis = 1))
model.add(Dense(1, activation = tfnn.softmax))
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(data, target, epochs = 6)
Run Code Online (Sandbox Code Playgroud)
我的输出:
Epoch 1/6
569/569 [==============================] - 2s 3ms/sample - loss: 10.0025 - acc: 0.3726
Epoch 2/6
569/569 [==============================] - 0s 172us/sample - loss: 10.0025 - acc: 0.3726
Epoch 3/6
569/569 [==============================] - 0s 176us/sample - loss: 10.0025 - acc: 0.3726
Epoch 4/6
569/569 [==============================] - 0s 167us/sample - loss: 10.0025 - acc: 0.3726
Epoch 5/6
569/569 [==============================] - 0s 163us/sample - loss: 10.0025 - acc: 0.3726
Epoch 6/6
569/569 [==============================] - 0s 169us/sample - loss: 10.0025 - acc: 0.3726
Run Code Online (Sandbox Code Playgroud)
我似乎经过几次迭代后 NN 停止学习(看看时代学习的时间,在第一个时代它是 2s,在其他时代它是 0s,在第一个时代处理数据的速度是 ms/sample,但在其他时代我们/样品)感谢您的时间!
Softmax 有sum=1
.
您不能将 softmax 与 1 个单位一起使用。它永远是 1。
使用'sigmoid'
.
还要小心'relu'
。它可能(幸运地)落入“全零”区域并停止进化。
理想情况下,批量归一化应该在它之前(这样你保证总会有一些正数):
model = Sequential()
model.add(Dense(30, input_dim = 30))
model.add(BatchNormalization(axis = 1))
model.add(Activation(tfnn.relu))
model.add(Dense(60)
model.add(BatchNormalization(axis = 1))
model.add(Activation(tfnn.relu))
model.add(Dense(1, activation = tfnn.sigmoid))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
807 次 |
最近记录: |