При подгонке модели keras произошли нераспознанные аргументы ключевого слова

#python #tensorflow #keras

#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)

~anaconda3envskeras environmentlibsite-packageskerasenginetraining.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:
введите описание изображения здесь

Я понятия не имею об этой ошибке, надеясь, что кто-нибудь сможет мне помочь.

Ответ №1:

Ошибка заключается в том, что вы используете generator параметр on model.fit , который не является допустимым аргументом (см. Документацию Keras по подгонке).

Вы можете вызывать model.fit с помощью генератора, но генератор является вашим x параметром:

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

Комментарии:

1. Обратите внимание, что ваш ответ ссылается на документацию tf.keras, которая не является библиотекой, используемой OP (keras и tf.keras — это разные библиотеки)

2. Да, спасибо, документация в этих библиотеках (особенно Keras) сбивает с толку. Я обновил свой ответ