这里写自定义目录标题

Jupyter Notebook6.5.4

tensorflow 2.12.0

pillow 9.5.0

numpy 1.23.5

keras 2.12.0

报错详细内容: ValueError: Failed to find data adapter that can handle input: ( containing values of types {“”}),

from keras.preprocessing.image import ImageDataGenerator

train_datagen=ImageDataGenerator(rescale=1./255)

training_set=train_datagen.flow_from_directory('catsdogs/train/',target_size=(50,50),batch_size=32,class_mode='binary'),

print(training_set)```

from keras.models import Sequential

from keras.layers import Conv2D,MaxPool2D,Flatten,Dense

model=Sequential()

#卷积层

model.add(Conv2D(32,(3,3),input_shape=(50,50,3),activation='relu'))

#池化层

model.add(MaxPool2D(pool_size=(2,2)))

#卷积层

model.add(Conv2D(32,(3,3),input_shape=(50,50,3),activation='relu'))

#池化层

model.add(MaxPool2D(pool_size=(2,2)))

#flattening layer

model.add(Flatten())

#FC layer

model.add(Dense(units=128,activation='relu'))

#Dog or Cat?

model.add(Dense(units=1,activation='sigmoid'))

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

model.summary()

model.fit(training_set,epochs=25)

经过搜索了解,原因是’flow_from_directory‘方法返回的是一个元组,而不是一个DirectoryIterator对象。这个元组只包含一个DirectoryIterator对象和一个空对象。

原因: 是keras和tensorflow的版本问题,看学习资料使用的是旧版本,运行没问题。 解决办法1: 可以把keras和tensorflow的版本降低,可以自行搜索低版本的keras和tensorflow,网上有看到keras 2.2.5版本是可以实现的。 pip install keras==2.2.5,如果不能直接安装则先把原来的版本删除,再重新安装。

解决办法2: 直接选择元组里面的对象

from keras.preprocessing.image import ImageDataGenerator

train_datagen=ImageDataGenerator(rescale=1./255)

training_set=train_datagen.flow_from_directory('catsdogs/train/',target_size=(50,50),batch_size=32,class_mode='binary'),

**print(training_set[0])**```

from keras.models import Sequential

from keras.layers import Conv2D,MaxPool2D,Flatten,Dense

model=Sequential()

#卷积层

model.add(Conv2D(32,(3,3),input_shape=(50,50,3),activation='relu'))

#池化层

model.add(MaxPool2D(pool_size=(2,2)))

#卷积层

model.add(Conv2D(32,(3,3),input_shape=(50,50,3),activation='relu'))

#池化层

model.add(MaxPool2D(pool_size=(2,2)))

#flattening layer

model.add(Flatten())

#FC layer

model.add(Dense(units=128,activation='relu'))

#Dog or Cat?

model.add(Dense(units=1,activation='sigmoid'))

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

model.summary()

model.fit(training_set[0],epochs=25)

把"training_set"修改为“training_set[0]”,修改之后运行正常!

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: