Validation 验证,尝试了不同的方法,但没有取得好的结果
我正试图训练一个CNN,使其进行大量的超参数调整,并设法在我的离散大小数据集上获得80%的准确率。然而,我开始过度装修,我完全没有得到比这更好的。这是我的网络:Validation 验证,尝试了不同的方法,但没有取得好的结果,validation,keras,deep-learning,neural-network,cnn,Validation,Keras,Deep Learning,Neural Network,Cnn,我正试图训练一个CNN,使其进行大量的超参数调整,并设法在我的离散大小数据集上获得80%的准确率。然而,我开始过度装修,我完全没有得到比这更好的。这是我的网络: depth=5 启动过滤器=32 model=keras.models.Sequential() 对于范围内的i(深度): 如果i==0: 输入形状=(img\u h,img\u w,3) 其他: 输入_形状=(无,无) model.add(tf.keras.layers.Conv2D)(过滤器=start\u f/2, 内核大小=(3
depth=5
启动过滤器=32
model=keras.models.Sequential()
对于范围内的i(深度):
如果i==0:
输入形状=(img\u h,img\u w,3)
其他:
输入_形状=(无,无)
model.add(tf.keras.layers.Conv2D)(过滤器=start\u f/2,
内核大小=(3,3),
步幅=(1,1),
“相同”,
输入形状=输入形状)
model.add(tf.keras.layers.ReLU())
model.add(tf.keras.layers.Conv2D)(过滤器=start\u f/2,
内核大小=(3,3),
步幅=(1,1),
“相同”,
输入形状=输入形状)
添加(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.ReLU())
add(tf.keras.layers.MaxPool2D(池大小=(2,2)))
起始值f*=2
model.add(layers.flatte())
add(tf.keras.layers.Dense(1024,activation='relu',kernel_regulazer=tf.keras.regulazers.l1(0.001)))
模型添加(tf.keras.layers.Dropout(0.5))
添加(tf.keras.layers.Dense(num_类,activation='softmax'))
model.summary()
到目前为止,我尝试了以下方法:
附言:在应用所描述的动作之前,我在同一型号上的前一次试穿中获得了80%——除了奥古斯丁之外,你可以尝试一些东西
首先,谢谢大家。我已经添加了关于深度和过滤器的信息,我忘记了。除了调整验证集大小之外,我已经完成了所有建议的步骤。实际上,我的数据集由5.7K个图像组成,其中20%用于验证。我无法增加数据集。我没有对验证应用任何预处理,我在训练集上做过。我将尝试在fit上设置class_权重参数。您应该在train和val集合中应用相同的预处理。augumentation不是只在training集合上完成吗?我一直在使用的预处理只是用于训练和验证的重缩放(重缩放=1./255),我添加了旋转、翻转和缩放,但没有成功,只是在训练中。是的,只是在训练中。因此,您确实对val集应用了相同的预处理(重新缩放)。因为你说,
我没有对验证应用任何预处理
。我以为你指的是通过ImageDataGenerator
中的preprocess\u函数
参数进行的非标准预处理。我应用于培训和验证的唯一标准是rescale=1./255