首页 > 解决方案 > 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,优化器 a​​dam @

型号结构:

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 以获得更正确的预测?

标签: pythontensorflowkerasartificial-intelligenceprediction

解决方案


如果橙色是您的验证损失/准确性,则说明您过度拟合。准确率几乎不会随着 epoch 数的增加而降低,而验证损失会增加。想一想

  • 平衡标签,也许它们不平衡你的准确性并没有告诉你那么多
  • 添加提前停止
  • 调整批量大小
  • 调整激活函数
  • 添加 DropOut
  • 测试其他优化器,例如 Adam

你使用了很多隐藏层,一开始就减少它们。我更喜欢从小型网络开始,甚至像逻辑回归或简单的线性模型,然后看看神经网络是否会提高性能。

考虑使用与神经网络不同的方法,例如 CART 方法(例如 XGBOOST)已被证明在小特征尺寸问题上优于神经网络(例如这里 7)。

我希望这有助于进一步探索这个问题!


推荐阅读