【问题标题】:what changes should i make to this model to achieve higher precision accuracy [closed]我应该对此模型进行哪些更改以实现更高的精度[关闭]
【发布时间】:2020-12-10 03:14:44
【问题描述】:

我正在使用 keras 卷积 2d 神经网络来解决分类问题,但是我可以达到的最佳准确度约为 30%。我应该怎么做才能用这个模型获得更高的精度?

这是我用来创建模型的代码:

model = Sequential()
model.add(Conv2D(128, kernel_size=(3,3), input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(128, kernel_size=(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(20, activation='softmax'))
adam = Adam(lr=3e-4)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])

x 数据包含 2480 场比赛,每场比赛有 20 名跑步者,以及每个跑步者的 100 个变量,总形状为 (2480, 20, 100) y 数据代表每场比赛的获胜者,是一个热编码的 2480 场比赛,每场比赛有 20 个 y 标签。总形状为 (2480, 20)

这个数据集可以在here找到并使用以下代码加载到内存中:

import numpy as np

x = np.loadtxt("x_data").reshape(2480, 20, 100)
y = np.loadtxt("y_data").reshape(2480, 20)

所有这些数据都是存储在纯文本数据中的浮点变量。 x 是 100 * 20 * 2480 个变量 y 是 20 * 2480 个变量

y 中的第一个值看起来像

[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]

这代表一号赛跑者赢得比赛

提前致谢

【问题讨论】:

  • 那么您的 y 数据究竟代表什么?在帖子本身中包含数据的 sn-p 并不是一个坏主意。很少有人会费心从外部来源下载您的数据。
  • y 数据代表比赛的获胜者,只是它是一个单热编码数组,我已经编辑了问题以希望使其更清晰
  • 首先,我会使用 sigmoid 激活,因为您本质上存在二进制分类问题。
  • 谢谢您的回复,您的意思是更换softmax吗?或者我用过的relu激活?当我使用 sigmoid 而不是其中任何一个时,网络似乎没有学习.. val_accuracy 根本没有增加
  • 我再次建议您阅读this 并为您的图层选择最佳参数。希望这会有所帮助!

标签: python machine-learning keras neural-network conv-neural-network


【解决方案1】:

首要任务 - 对于数值数据,根本不要使用卷积层。

只需使用 3 到 4 个 Dense Layers 和适当的正则化层,如 BatchNorm 和 Dropout 即可。而且您还需要使用 softmax,因为您的 y(target) 是 one-hot 编码的。使用默认的 Adam 学习率,应该已经足够了。

分类交叉熵 + Softmax = 多类分类
二元交叉熵 + Sigmoid = 多标签分类

参考 100 个变量,批次形状将是 (None, 2800, 100)。 2800指的是没有。数据点(行),100 是指每个样本的特征(列),无是指批量大小。您需要将其重塑为 (2800, 100)

【讨论】:

  • 非常感谢,这对我很有帮助,我刚开始使用密集层,准确性不是很好,但这可能与你提到的数据形状有关,我一定会接受您的建议
  • 完美运行!将准确性提高了一倍已经谢谢你了..
  • @ZacBurns 很高兴它帮助了你!使用正则化来防止过度拟合并提高测试准确性。我的 GitHub 上也有一个 Tensorflow-Tutorials,我将在此评论中留下链接。随时参考。从这个周末开始,我将主要每周更新一次。 TensorFlow-Tutorials
最近更新 更多