我正在尝试训练神经网络,以通过电竞预测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),尝试了不同的损失函数,添加/删除了辍学层,并对模型的权重尝试了不同的正则化。
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为玩家的评分。我在做什么本质上是错的?
答案 0 :(得分:1)
您可以尝试以下步骤: