Sou*_*Roy 6 python neural-network deep-learning keras
我正在使用flow_from_dataframe
将我的图像传递给生成器。但是我使用 cifar10 数据工作。在 dataframe 方法的流程中"y_col"
,需要设置一个参数,其中包含标签列。我的文件如下。
Name 1 2 3 4 5 6 7 8 9 10 11 12 13 14
00001522_000.png 0 0 0 0 0 0 0 0 0 0 0 0 0 0
00023313_000.png 1 0 0 0 0 0 0 0 0 0 0 0 0 0
00023313_001.png 0 0 0 0 0 0 0 0 0 0 0 0 0 0
00023313_002.png 0 0 1 0 0 0 0 1 0 0 1 0 0 0
Run Code Online (Sandbox Code Playgroud)
如果我们看它,最后一张图像分为多个类。
现在是我学习该方法的文件,该文件如下所示:
id,label
1,frog
2,truck
3,truck
4,deer
Run Code Online (Sandbox Code Playgroud)
下面是我使用的代码
import pandas as pd
df=pd.read_csv(r".\train.csv")
datagen=ImageDataGenerator(rescale=1./255)
train_generator=datagen.flow_from_dataframe(dataframe=df,directory=".\train_imgs", x_col="id", y_col="label", has_ext=False, class_mode="categorical", target_size=(32,32), batch_size=32)
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
input_shape=(32,32,3)))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
model.compile(optimizers.rmsprop(lr=0.0001,loss="categorical_crossentropy", metrics=["accuracy"])
STEP_SIZE_TRAIN=train_generator.n//train_generator.batch_size
STEP_SIZE_VALID=valid_generator.n//valid_generator.batch_size
model.fit_generator(generator=train_generator,
steps_per_epoch=STEP_SIZE_TRAIN,
validation_data=valid_generator,
validation_steps=STEP_SIZE_VALID,
epochs=10)
Run Code Online (Sandbox Code Playgroud)
我如何安排我的标签列,以便"y_col"
参数可以像第二个文件一样只有一列。或者有没有其他不改变标签的我可以将它传递给y_col
?