python - 制作一个简单的 KERAS 网络进行分类
问题描述
我正在尝试做一个简单的 Keras 神经网络,但该模型不适合:
Train on 562 samples, validate on 188 samples
Epoch 1/20
562/562 [==============================] - 1s 1ms/step - loss: 8.1130 - acc: 0.4911 - val_loss: 7.6320 - val_acc: 0.5213
Epoch 2/20
562/562 [==============================] - 0s 298us/step - loss: 8.1130 - acc: 0.4911 - val_loss: 7.6320 - val_acc: 0.5213
Epoch 3/20
562/562 [==============================] - 0s 295us/step - loss: 8.1130 - acc: 0.4911 - val_loss: 7.6320 - val_acc: 0.5213
Epoch 4/20
562/562 [==============================] - 0s 282us/step - loss: 8.1130 - acc: 0.4911 - val_loss: 7.6320 - val_acc: 0.5213
Epoch 5/20
562/562 [==============================] - 0s 289us/step - loss: 8.1130 - acc: 0.4911 - val_loss: 7.6320 - val_acc: 0.5213
Epoch 6/20
562/562 [==============================] - 0s 265us/step - loss: 8.1130 - acc: 0.4911 - val_loss: 7.6320 - val_acc: 0.5213
数据库结构为 CSV 文件,如下所示:
doc venda img1 img2 v1 v2 gt
RG venda1 img123 img12 [3399, 162675, ...] [3399, 162675, ...] 1
如果 img1 和 im2 来自同一类,我的意图是使用 v1 和 v2 向量之间的差异来回答我。
编码:
from sklearn.model_selection import train_test_split
(X_train, X_test, Y_train, Y_test) = train_test_split(train, train_labels, test_size=0.25, random_state=42)
# create the model
model = Sequential()
model.add(Dense(10, activation="relu", input_dim=10, kernel_initializer="uniform"))
model.add(Dense(6, activation="relu", kernel_initializer="uniform"))
model.add(Dense(1, activation='sigmoid'))
print(model.summary())
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(
np.array(X_train),
np.array(Y_train),
shuffle=True,
epochs=20,
verbose=1,
batch_size=5,
validation_data=(np.array(X_test), np.array(Y_test)),
)
我做错了什么?
解决方案
将差异向量除以某个常数,使特征向量在 0 到 1 或 -1 到 1 的范围内。现在值太大了,损失会很高。如果数据正确规范化,网络学习得更快。
推荐阅读
- c# - 删除 innerXML 后,如何删除 C# 中的空标签?
- javascript - 将文本添加到标签末尾并包含
无法正常工作的标签 - python - 即使我输入数字,猜谜游戏按钮是否应该什么也不做?
- c++ - std::thread 从内部线程函数中释放
- netlogo - 在 Netlogo 中用一只乌龟停止整个按钮
- netflix-conductor - Netflix 指挥健康检查
- c# - 如何读取 SQL 位数据类型并将其写入 C# 中的文件
- .net-core - 使用 Scaffold-DbContext、EntityFrameworkCore.Jet、.NetCore 时,错误无法从程序集 System.Data 加载类型 System.Data.OleDb.OleDbConnection
- azure - 如何修复“目标位置不存在用于分片映射管理器持久性的数据结构。” 在天蓝色的弹性工作中
- python - 如何使用python日志记录每条消息登录不同的文件