Keras 图像识别训练模型

时间:2021-01-21 18:01:08

标签: python tensorflow keras deep-learning

我的任务是创建一个训练模型,该模型将在最后生成 .h5 文件。然而,我在这方面遇到了很多麻烦,希望我能得到一些指导。目前我正试图让它基本上只是开始训练,然后创建 .h5 文件,我将在以后对图像进行规范化等工作。

有几点需要注意,我有两个以上的类别,而且我的图片大小不一。我也没有 GPU。我希望得到一些指导或答案。感谢你们提供的任何帮助

######################################################
# Imports
######################################################
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras import layers

######################################################
# Settings and Parameters
######################################################
train_pics = ImageDataGenerator(rescale=1/255)  # setting the value of which we multiply before any other processing
test_pics = ImageDataGenerator(rescale=1/255)  # setting the value of which we multiply before any other processing
trainSet = train_pics.flow_from_directory('Pictures/train/', target_size=(100, 100), batch_size=11,
                                          class_mode='categorical')  # path and data
testSet = train_pics.flow_from_directory('Pictures/test/', target_size=(100, 100), batch_size=20,
                                        class_mode='categorical')  # path and data

######################################################
# Model Creation
######################################################
model = keras.Sequential(
    [
        tf.keras.layers.Conv2D(16, (3, 3), activation='relu', input_shape=(250, 250, 3)),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(32, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        layers.Flatten(),
        layers.Dropout(0.5),
        layers.Dense(8, activation="softmax"),
    ]
)

model.compile(loss='categorical_crossentropy',  # compile the model
              optimizer='adam',
              metrics=['accuracy'])

train = model.fit(  # train the model
    train_pics,
    steps_per_epoch=200,
    epochs=100,
    validation_data=testSet
)

model.save('charactersPics.h5')

这是输出: enter image description here

1 个答案:

答案 0 :(得分:0)

您正在尝试将 ImageDataGenerator 作为参数传递给模型。您需要传入训练集。改变

train = model.fit(train_pics,...)

train = model.fit(trainSet,...)

编辑:pycharm 中的警告是相当正常的,不用太担心。