CNN在我的数据集上做得不好

2024-06-01 02:42:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将no中的卷积函数应用于我自己的数据集。但是CNN不能很好地处理我的数据集,我也找不到原因。下面,我将详细描述我的数据集,有人能帮我吗?非常感谢!在

数据集: 我的目标是使用CNN将我的图像(其大小为28*28=784)分为0和1两种类型。 我的原始数据是csv文件数据x.csv以及数据.csv. 在数据x.csv,每行存储每个图像的每个像素的灰度值数据.csv,每行是每个图像的标签。 数据x.csv(1000行,784列)

enter image description here

在数据.csv(1000行)

0;1;1;0;1;0;1;1;1;0;1....

基于以上csv数据,我构建了我的数据集('我的数据集.pkl.gz')的方法如下:

^{pr2}$

在构建了数据集之后,我在卷积中使用它_mlp.py,通过替换mnist.pkl.gz版. 在我的数据集中,训练、验证和测试数据集中分别有1000个示例、500个示例和500个示例。所以在卷积中_mlp.py,我将批处理大小设置为500。然后在训练、验证和测试数据集中分别有2个小批次、1个小批次和1个小批次。我也让n峎出来是2。然后运行代码,打印出每个历元的训练误差。结果如下:

enter image description here

不管它运行了多少个时期,验证错误永远不会改变。事实上,我已经将学习率从0.1、0.01、0.001……改变了,但结果始终没有改变。 我想知道为什么会这样,有人能帮我吗?非常感谢你!在


Tags: csv数据函数nopy图像示例原因
1条回答
网友
1楼 · 发布于 2024-06-01 02:42:22

看起来你的培训、验证和测试数据集是完全不同的。我的意思是,你的数据集可能是根据一些特征值或输出进行排序的,这样训练集和验证集没有共同的特性。这种情况的一个例子是,对于MNIST数据分区,在训练集中只有0-3的值,在验证集中只有4-6个值,在测试集中只有7-9个值。在

如果您读取所有三个数据集,随机地对它们进行洗牌,然后将它们拆分为三个集,则效果会更好。一般来说,人们使用7:2:1或8:1:1的比例来测试大小、验证大小和测试大小。这种分割后的模型学习效果会更好,精度也会提高。在

另外,我建议您使用较小的小批量,可能是32或64。这将导致每一个历元精度的提高。我希望有帮助。在

相关问题 更多 >