【发布时间】:2018-07-27 12:26:04
【问题描述】:
from keras import *
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D
from keras import optimizers
#from parser import load_data # data loading
# Collecting data:
img_width, img_height = 150, 150
training_data_dir = "train"
testing_data_dir = "test"
# used to rescale the pixel values from [0, 255] to [0, 1] interval
datagen = ImageDataGenerator(rescale=1./255)
# automagically retrieve images and their classes for train and validation sets
train_generator = datagen.flow_from_directory(
training_data_dir,
target_size=(img_width, img_height),
batch_size=16,
class_mode='binary')
test_generator = datagen.flow_from_directory(
testing_data_dir,
target_size=(img_width, img_height),
batch_size=32,
class_mode='binary')
# Building model:
model = Sequential()
model.add(Convolution2D(32, 3, 3, input_shape=(img_width, img_height,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(Convolution2D(64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss="binary_crossentropy",
optimizer="rmsprop",
metrics=["accuracy"])
# Training model:
nb_epoch = 30
nb_train_samples = 2048
nb_validation_samples = 832
model.fit_generator(
train_generator,
samples_per_epoch=nb_train_samples,
nb_epoch=nb_epoch,
validation_data=test_generator,
nb_val_samples=nb_validation_samples)
这是我的 CNN 代码,它使用来自文件夹 train 和 test 的图像进行训练。但是每当我尝试训练它时,程序似乎一直卡在 epoch 1/30,我让它通宵运行了 8 个小时,它根本没有移动,我可以尝试任何修复吗?
更新:
我的代码目前的输出是:
使用 TensorFlow 后端。
找到属于 0 个类别的 0 个图像。
找到属于 0 个类别的 0 个图像。
image_classifiy.py:78:用户警告:更新您对 Keras 2 API 的 fit_generator 调用:fit_generator(<keras_pre..., epochs=30, validation_data=<keras_pre..., validation_steps=832, steps_per_epoch=128)
step_per_epoch=128)
纪元 1/30
【问题讨论】:
-
它只显示“Epoch 1/max_epochs”吗?那么要么你的数据没有到达,要么你默默地耗尽了内存。你可以用 next(train_generator) 测试你的生成器,看看它是否返回一些东西
-
我用输出更新了我的帖子 ^
标签: python tensorflow keras