python - 为什么我的 acc 总是更高但我的 val_acc 很小?
问题描述
我尝试训练 14000 个训练数据集和 3500 个验证数据集,但是为什么每次训练我总是得到高精度结果而验证部分非常小
那么如果我希望验证的结果接近训练的准确性并为每个时期提供重要的补充,我该怎么办
是否必须增加或减少一些东西?[对不起英语不好]
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
classifier = Sequential()
classifier.add(Conv2D(16, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
`classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))`
classifier.add(Conv2D(64, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
from keras.callbacks import TensorBoard
# Use TensorBoard
callbacks = TensorBoard(log_dir='./Graph')
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('dataset/training_set',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
test_set = test_datagen.flow_from_directory('dataset/test_set',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
classifier.fit_generator(training_set,
steps_per_epoch = 100,
epochs = 200,
validation_data = test_set,
validation_steps = 200)
classifier.save('model.h5')
我得到了这个结果(对不起,我不知道如何把图像放在这里)
纪元 198/200 100/100 [===============================] - 114s 1s/step - loss: 0.1032 - acc :0.9619 - val_loss:1.1953 - val_acc:0.7160
纪元 199/200 100/100 [===============================] - 115s 1s/步 - 损失:0.1107 - acc :0.9591 - val_loss:1.4148 - val_acc:0.6702
纪元 200/200 100/100 [===============================] - 112s 1s/步 - 损失:0.1229 - acc :0.9528 - val_loss:1.2995 - val_acc:0.6928
解决方案
推荐阅读
- javascript - 如何将范围值传递给元素“值”属性
- python - 在货币价值上放置适当的零
- javascript - 节点将函数名称从文件推送到数组
- android - FragmentManager 在 Fragment 内执行 biometricPrompt?.authenticate(promptInfo) 时已经在执行事务
- c - 在 C 中实现向量(动态数组) - 函数和主文件
- php - 如何修复 Heroku 无法识别我要部署的 PHP Web 应用程序
- ios - NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802) Xamarin.Forms IOS
- excel - Excel:如何在自动更新的文件夹中制作文件夹列表
- c - 在 C 中操作链表时如何解决此段错误问题?
- r - 每周从 user_id 和 date 查找新的活跃用户