gpt4 book ai didi

python - keras fit_generator 中 nb_epoch、samples_per_epoch 和 nb_val_samples 的标准?

转载 作者:行者123 更新时间:2023-11-28 20:37:32 25 4
gpt4 key购买 nike

我创建了一个简单的猫狗图像分类(卷积神经网络)。拥有每类 7,000 个训练数据和每类 5,500 个验证数据。

我的问题是我的系统没有完成所有时期。如果有人可以解释选择 nb_epoch、samples_per_epoch 和 nb_val_samples 值的比例或标准以从给定数量的训练和验证数据中获得最大 yield ,我将不胜感激。

以下是我的代码:

from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.callbacks import EarlyStopping
import numpy as np
from keras.preprocessing import image
from keras.utils.np_utils import probas_to_classes

model=Sequential()
model.add(Convolution2D(32, 5,5, input_shape=(28,28,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(32,3,3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))

model.add(Dense(2))
model.add(Activation('softmax'))

train_datagen=ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen=ImageDataGenerator(rescale=1./255)

train_generator=train_datagen.flow_from_directory(
r'F:\data\train',
target_size=(28,28),
classes=['dog','cat'],
batch_size=10,
class_mode='categorical',
shuffle=True)

validation_generator=test_datagen.flow_from_directory(
r'F:\data\validation',
target_size=(28, 28),
classes=['dog','cat'],
batch_size=10,
class_mode='categorical',
shuffle=True)

model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
early_stopping=EarlyStopping(monitor='val_loss', patience=2)
model.fit_generator(train_generator,verbose=2, samples_per_epoch=650, nb_epoch=100, validation_data=validation_generator, callbacks=[early_stopping],nb_val_samples=550)

json_string=model.to_json()
open(r'F:\data\mnistcnn_arc.json','w').write(json_string)
model.save_weights(r'F:\data\mnistcnn_weights.h5')
score=model.evaluate_generator(validation_generator, 1000)

print('Test score:', score[0])
print('Test accuracy:', score[1])

img_path = 'F:/abc.jpg'
img = image.load_img(img_path, target_size=(28, 28))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)

y_proba = model.predict(x)
y_classes = probas_to_classes(y_proba)
print(train_generator.class_indices)
print(y_classes)

最佳答案

samples_per_epoch 通常设置为:

samples_per_epoch=train_generator.nb_samples

通过这种方式,您可以确保每个时期看到的样本数量等于训练集的大小。这意味着您会看到每个时期的所有训练样本。


nb_epoch 完全取决于您。它决定了您对 samples_per_epoch 定义的数字进行迭代的次数。

举个例子,在你的代码中,你的模型现在正在“看到”(nb_epoch * samples_per_epoch) 图像,在这种情况下是 65000 张图像。


nb_val_samples 确定您的模型在完成每个时期后评估的验证样本数量。这也取决于你。通常的事情是设置:

nb_val_samples=validation_generator.nb_samples

为了在完整的验证集上评估您的模型。


batch_size 确定有多少图像被同时提供给您的 gpu(或 cpu)。愚蠢的规则是设置你的 gpu 内存允许的最大 batch_size。理想的 batch_size 是当今研究的活跃领域,但通常更大的 batch_size 效果更好。

关于python - keras fit_generator 中 nb_epoch、samples_per_epoch 和 nb_val_samples 的标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42734182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com