#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) сбивает с толку. Я обновил свой ответ