拟合keras模型时发生无法识别的关键字参数

时间:2020-10-21 20:34:08

标签: python tensorflow keras

我正在尝试使用ImageDataGenerator标记数据。 但是,当我拟合模型时,显示错误。

TypeError: Unrecognized keyword arguments: {'generator': <keras_preprocessing.image.dataframe_iterator.DataFrameIterator object at 0x0000021CC81BBE48>}

这是我的完整代码:

导入区域:

import numpy as np
import keras  
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.callbacks import ModelCheckpoint
import pandas as pd
from keras_preprocessing.image import ImageDataGenerator

数据加载和标记:

dataset=pd.read_csv('labelset.csv')
columns=['Agonist','Antagonist','Binding']
datagen=ImageDataGenerator(rescale=1./255.)
test_datagen=ImageDataGenerator(rescale=1./255.)

train_generator=datagen.flow_from_dataframe(
dataframe=dataset[:1500],
directory ='C:/Users/j7042/Desktop/Training set/' ,
x_col="Filenames",
y_col=columns,
batch_size=1,
seed=42,
shuffle=True,
class_mode="raw",
target_size=(500,500))

test_generator=test_datagen.flow_from_dataframe(
dataframe=dataset[1500:],
directory='C:/Users/j7042/Desktop/Training set/',
x_col="Filenames",
y_col=columns,
batch_size=1,
seed=42,
shuffle=True,
class_mode="raw",
target_size=(500,500))

模型区域:

model = Sequential()
model.add(Conv2D(8, kernel_size=(3, 3),activation='relu',input_shape=[500,500,3]))
model.add(Conv2D(16,(3,3),activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['acc'])

拟合:

STEP_SIZE_TRAIN=train_generator.n//train_generator.batch_size
STEP_SIZE_VALID=valid_generator.n//test_generator.batch_size


model.fit(generator=train_generator,steps_per_epoch=STEP_SIZE_TRAIN,validation_data=valid_generator,validation_steps=STEP_SIZE_VALID,batch_size=1, epochs=10)

完整的错误消息:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-59-e499c6763112> in <module>
      3 
      4 
----> 5 model.fit(generator=train_generator,steps_per_epoch=STEP_SIZE_TRAIN,validation_data=valid_generator,validation_steps=STEP_SIZE_VALID,batch_size=1, epochs=10)

~\anaconda3\envs\keras environment\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
   1116             epochs = kwargs.pop('nb_epoch')
   1117         if kwargs:
-> 1118             raise TypeError('Unrecognized keyword arguments: ' + str(kwargs))
   1119 
   1120         if x is None and y is None and steps_per_epoch is None:

TypeError: Unrecognized keyword arguments: {'generator': <keras_preprocessing.image.dataframe_iterator.DataFrameIterator object at 0x0000021CC81BBE48>}

这是我的labelset.csv的一部分: enter image description here

我不知道这个错误,希望有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

错误是因为您在/etc/ceph/ceph.conf上使用了generator参数,该参数不是有效的参数(请参见Keras documentation on Fit)。

您可以使用生成器来调用model.fit,但是生成器是您的model.fit参数:

x