我正在尝试制作可以从图像预测动物的CNN。以下是我正在使用的工具和python版本。 IDE:Spyder 3.2.6与Anaconda Tensorflow:版本1.2.1 Keras 2.1.4。 python 3.5
from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Conv2D
classifier = Sequential()
classifier.add(Convolution2D(32,3,3,input_shape=(64,64,3),activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dense(output_dim = 128,activation='relu'))
classifier.add(Dense(output_dim = 1,activation='sigmoid'))
classifier.compile(optimizer='adam', loss = 'binary_crossentropy', matrix = ['accuracy'])
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory('dataset/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
test_set = test_datagen.flow_from_directory('dataset/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
classifier.fit_generator(training_set,
steps_per_epoch=(8000/32),
epochs=25,
validation_data=test_set,
validation_steps=(2000/32))
但是当我运行上面显示的fit_generator方法时,我得到以下错误
classifier.fit_generator(training_set,
steps_per_epoch=(8000/32),
epochs=25,
validation_data=test_set,
validation_steps=(2000/32))
Epoch 1/25
Traceback (most recent call last):
File "<ipython-input-7-f76922930094>", line 5, in <module>
validation_steps=(2000/32))
File "C:\Users\fspathan\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Users\fspathan\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\keras\models.py", line 1276, in fit_generator
initial_epoch=initial_epoch)
File "C:\Users\fspathan\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Users\fspathan\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\keras\engine\training.py", line 2224, in fit_generator
class_weight=class_weight)
File "C:\Users\fspathan\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\keras\engine\training.py", line 1883, in train_on_batch
outputs = self.train_function(ins)
File "C:\Users\fspathan\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\keras\backend\tensorflow_backend.py", line 2478, in __call__
**self.session_kwargs)
TypeError: run() got an unexpected keyword argument 'matrix'
我已经完成了enogh谷歌并应用了所有必要的修复程序,但仍然没有进展。如果有人知道解决方案,这将是一个很好的帮助
非常感谢
答案 0 :(得分:0)
在第
行classifier.compile(optimizer='adam', loss = 'binary_crossentropy', matrix = ['accuracy'])
您传递参数matrix = ['accuracy']
。这不是compile
函数接受的任何参数,并且如文档所述,传递给此函数的额外参数将转发到后端,在TensorFlow的情况下转发到内部的run
方法tf.Session
对象。但是,matrix
也不是该函数的预期参数,因此在尝试传递时它会失败。
我怀疑你打算做的是要求Keras计算准确度指标,在这种情况下你需要传递metrics
参数,而不是matrix
:
classifier.compile(optimizer='adam', loss = 'binary_crossentropy', metrics = ['accuracy'])