gpt4 book ai didi

machine-learning - Keras 模型准确性没有提高

转载 作者:行者123 更新时间:2023-11-30 09:05:01 25 4
gpt4 key购买 nike

我正在尝试训练一个神经网络来预测 easports 中《FIFA 18》玩家的评分(评分在 64-99 之间)。我正在使用他们的玩家数据库( https://easports.com/fifa/ultimate-team/api/fut/item?page=1 ),并将数据处理为training_x、testing_x、training_y、testing_y。每个训练样本都是一个包含 7 个值的 numpy 数组...前 6 个是球员的不同统计数据(投篮、传球、运球等),最后一个值是球员的位置(我将其映射到 1 -8,取决于位置),每个测试值是64-99之间的单个整数,代表该玩家的评分。

我尝试了许多不同的超参数,包括将激活函数更改为 tanh 和 relu,并且我尝试在第一个密集层之后添加批量归一化层(我认为它可能有用,因为我的一个功能是非常小,其他特征在 50-99 之间),我尝试过 SGD 优化器(更改了学习率、动量,甚至尝试将优化器更改为 Adam),尝试了不同的损失函数,添加/删除了 dropout 层,并尝试了不同的正则化模型的权重。

model = Sequential()
model.add(Dense(64, input_shape=(7,),
kernel_regularizer=regularizers.l2(0.01)))
//batch normalization?
model.add(Activation('sigmoid'))
model.add(Dense(64, kernel_regularizer=regularizers.l2(0.01),
activation='sigmoid'))
model.add(Dropout(0.3))
model.add(Dense(32, kernel_regularizer=regularizers.l2(0.01),
activation='sigmoid'))
model.add(Dense(1, activation='linear'))
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_absolute_error', metrics=['accuracy'],
optimizer=sgd)
model.fit(training_x, training_y, epochs=50, batch_size=128, shuffle=True)

当我训练模型时,损失始终为 nan,准确度始终为 0,即使我尝试调整很多不同的参数。然而,如果我从数据中删除最后一个特征,即玩家的位置,并更新第一个密集层的输入形状,则模型实际上会“训练”,并且无论我更改什么参数,最终的准确度都会达到 6% 左右。在这种情况下,我发现该模型仅预测 79 为玩家的评分。我本质上做错了什么?

最佳答案

您可以尝试以下步骤:

  1. 使用均方误差损失函数。
  2. 使用 Adam 可以帮助您以 0.0001 或 0.001 等低学习率更快地收敛。否则,请尝试使用 RMSprop 优化器
  3. 使用默认正则化器。实际上没有。
  4. 由于这是一个回归任务,在除输出层之外的所有层中使用像 ReLU 这样的激活函数(包括输入层)。 在输出层使用线性激活
  5. 正如@pooyan 在评论中提到的,规范化特征。请参阅here 。甚至尝试standardizing the features 。使用最适合的那个。

关于machine-learning - Keras 模型准确性没有提高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com