python - 如何查看为什么 keras / tensorflow 模型会卡住?
问题描述
我的代码是:
from keras.models import Sequential
from keras.layers import Dense
import numpy
import pandas as pd
X = pd.read_csv(
"data/train.csv", usecols=['Type', 'Age', 'Breed1', 'Breed2', 'Gender', 'Color1', 'Color2', 'Color3', 'MaturitySize', 'FurLength', 'Vaccinated', 'Dewormed', 'Sterilized', 'Health', 'Quantity', 'Fee', 'VideoAmt', 'PhotoAmt'])
Y = pd.read_csv(
"data/train.csv", usecols=['AdoptionSpeed'])
model = Sequential()
model.add(Dense(18, input_dim=18, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam', metrics=['accuracy'])
model.fit(X, Y, epochs=150, batch_size=100)
scores = model.evaluate(X, Y)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
我正在尝试训练以了解各种因素(类型、年龄等)如何影响AdoptionSpeed
. 然而,准确率停留在 20.6%,并没有真正从那里移动。
Epoch 2/150
14993/14993 [==============================] - 0s 9us/step - loss: -24.1539 - acc: 0.2061
Epoch 3/150
14993/14993 [==============================] - 0s 9us/step - loss: -24.1591 - acc: 0.2061
Epoch 4/150
14993/14993 [==============================] - 0s 9us/step - loss: -24.1626 - acc: 0.2061
...
Epoch 150/150
14993/14993 [==============================] - 0s 9us/step - loss: -24.1757 - acc: 0.2061
14993/14993 [==============================] - 0s 11us/step
acc: 20.61%
我能做些什么来轻推以摆脱困境吗?
解决方案
根据损失值,您的真实数据似乎与模型的输出(sigmoid)不在同一范围内。
Sigmoid 输出仅在 0 和 1 之间。因此,您应该标准化您的数据,使其介于 0 和 1 之间。一种可能性是简单地y
除以y.max()
。
或者您可以尝试其他可能性,考虑:
- sigmoid:介于 0 和 1 之间
- tanh:介于 -1 和 1 之间
- relu: 0 到无穷大
- 线性:-inf 到 +inf
推荐阅读
- javascript - 在不同的函数调用语法中,承诺的控制流如何在 javascript 中导航
- javascript - 使用js.context.callMethod()调用方法时如何接收数据返回flutter?
- angular - 如何使用 chrome 正确调试 Angular 应用程序
- html - 如何使用 jQuery 自动对 html 中的行求和?
- css - 如何在 CSS 中使用 vendorPrefixed 'transform' 属性?
- dart - Aqueduct db 生成错误:错误状态:NoSuchMethodError:在 null 上调用了 getter 'length'
- javascript - 如何比较两个 json 对象,检查 id 是否相同然后分配给另一个对象值?
- vue.js - 使用带有模式的 Vue 公式
- mysql - MySQL显示两个值的差异之和
- android - 在android中滚动时自动取消选中recyclerview中的复选框