python - AI - 学习最佳组合
问题描述
总参数:48K
输入 X:
array([[ 1964, 12, 32772, ..., 0, 6176, 0],
[ 1964, 12, 32772, ..., 0, 6841, 0],
[ 1964, 28, 32772, ..., 0, 6176, 0],
...,
[ 7400, 20, 41565, ..., 0, 8149, 0],
[ 7400, 20, 41565, ..., 0, 8151, 0],
[ 7400, 20, 41565, ..., 0, 8150, 0]], dtype=int32)
输出 y:
array([0., 0., 0., ..., 1., 0., 0.])
型号结构:
model = Sequential()
model.add(BatchNormalization(input_shape=(7,)))
model.add(Dense(32, activation="relu"))
model.add(Dense(32, activation="relu"))
model.add(Dense(64, activation="relu"))
model.add(Dense(32, activation="relu"))
model.add(Dense(32, activation="relu"))
model.add(Dense(16, activation="relu"))
model.add(Dense(1, activation=None))
在第一个输入层中,我使用批量标准化,并且我的 acc 从 50 增加到 73,我的意思是这是一个很好的解决方案..
模型编译
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
我也尝试“亚当”和同样的结果。
模型拟合:
history = model.fit(x_train, y_train, batch_size=2048, validation_data=(x_test, y_test), epochs=1000)
我还尝试了更多组合,epochs=30000 和批量大小 1024 并获得 acc 78.51。
我还尝试将每一层加倍,节点 * 2:
我有 16k 输出 1,所以通过这个解决方案,我得到 6k 校正预测。@ 使用 epochs=30000 和批量大小 1024,优化器 adam @
型号结构:
model = Sequential()
model.add(BatchNormalization(input_shape=(7,)))
model.add(Dense(64, activation="relu"))
model.add(Dense(64, activation="relu"))
model.add(Dense(128, activation="relu"))
model.add(Dense(32, activation="relu"))
model.add(Dense(1, activation='sigmoid'))
我的简单问题如何增加 acc 以获得更正确的预测?
解决方案
如果橙色是您的验证损失/准确性,则说明您过度拟合。准确率几乎不会随着 epoch 数的增加而降低,而验证损失会增加。想一想
- 平衡标签,也许它们不平衡你的准确性并没有告诉你那么多
- 添加提前停止
- 调整批量大小
- 调整激活函数
- 添加 DropOut
- 测试其他优化器,例如 Adam
你使用了很多隐藏层,一开始就减少它们。我更喜欢从小型网络开始,甚至像逻辑回归或简单的线性模型,然后看看神经网络是否会提高性能。
考虑使用与神经网络不同的方法,例如 CART 方法(例如 XGBOOST)已被证明在小特征尺寸问题上优于神经网络(例如这里 7)。
我希望这有助于进一步探索这个问题!
推荐阅读
- c# - 如何将用户在向导中检查的类添加到项目模板?
- macos - 新的 Macbook 不会运行 Tizen 模拟器
- jquery - 将 SHOUTcast 曲目信息拆分为“歌曲名称”和“艺术家姓名”
- javascript - 如何在javascript中声明没有空格的var
- python - 为类的不同实例并行化 python 代码
- loops - golang中的多重初始化
- apache-spark - Databricks 访问不使用 SPARK sc 的文件
- database - 使用相同的主键存储数据 Dynamodb
- java - 调整 Android Studios 示例 BluetoothLeGatt 代码以显示可检查列表而不是列表视图
- c++ - 提升序列化,按基类型加载归档类会给出错误数据