سلام
من با استفاده از train generator اومدم تصویر رو دادم به تنسور
سوال :
1- چرا با رم دو گیگ گرافیک بیشتر از دو batch size میدم گرافیک پر میشه و اجرا نمیشه ؟(تصاویر 300*800 هستند)
2-در قسمت نمایش خطا چرا با وجود دادن دیتا ولیدیشن نمایش داده نمیشه مثل val_acc , loss_acc ? آیا داره دیتا ولیدیشن رو چک میکنه ؟
[==========] - ETA: 5:34:24 - loss: 0.6931 - acc: 0.518616375/27823 [=.....] - ETA: 5:32:15 - loss: 0.6931 - acc: 0.5182T
3- learning rate decreasing همون decay هست تو optimizer ?
4- بهترین learning rate رو باید دستی به دست آورد یا راه بهتری هست ؟
5- معمولا تو VGG ,... بهترین روش optimizer چی هست ؟
6- این خط ImageDataGenerator(rescale=1./255 میاد مقدار پیکسل رو تقسیم بر 255 میکنه که نرمال بشه ؟
با تشکر
width=300
height=800
batch_size = 2
test_datagen = ImageDataGenerator(rescale=1./255)
train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'f:/train', # this is the target directory
target_size=(width, height), # all images will be resized to 150x150
batch_size=batch_size,
color_mode= "grayscale",
class_mode='binary') # since we use binary_crossentropy loss, we need binary labels
# this is a similar generator, for validation data
validation_generator = test_datagen.flow_from_directory(
'f:/validation',
target_size=(width, height),
batch_size=batch_size,
color_mode= "grayscale",
class_mode='binary')
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
model = Sequential()
#vgg16
model.add(Conv2D(64, (3, 3), input_shape=(width, height,1))) #??????????????????????????????????????????????????????
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3))) #??????????????????????????????????????????????????????
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(128, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(256, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(256, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(256, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
#sgd = keras.optimizers.rmsprop(lr=0.001) #, decay=0.1
sgd = keras.optimizers.Adadelta(lr=0.001) #, decay=0.1
model.compile(loss='binary_crossentropy',
optimizer=sgd,
metrics=['accuracy'])
# gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True, gpu_options=gpu_options))
model.fit_generator(
train_generator,
steps_per_epoch=int(train_generator.samples/train_generator.batch_size),
epochs=5,
validation_data=validation_generator,
validation_steps=int(validation_generator.samples/validation_generator.batch_size))