Python 我正在进行迁移学习,我得到了一个;np.扩展“dims”;错误

Python 我正在进行迁移学习,我得到了一个;np.扩展“dims”;错误,python,keras,deep-learning,prediction,Python,Keras,Deep Learning,Prediction,我使用的是VGG16模型,我冻结了所有卷积层,移除了最后一个密集层(预测一个),并将其更改为我自己的(3个输出) 如果有任何帮助:train=200图像,valid=8,test=10 这是我的代码。 train_path = 'animals/train' valid_path = 'animals/valid' test_path = 'animals/test' train_batches = ImageDataGenerator().flow_from_directory(train_

我使用的是VGG16模型,我冻结了所有卷积层,移除了最后一个密集层(预测一个),并将其更改为我自己的(3个输出)

如果有任何帮助:train=200图像,valid=8,test=10

这是我的代码。

train_path = 'animals/train'
valid_path = 'animals/valid'
test_path = 'animals/test'

train_batches = ImageDataGenerator().flow_from_directory(train_path, target_size=(224, 224), classes=['DOLPHIN', 'SHARK', 'WHALE'], batch_size=10)
valid_batches = ImageDataGenerator().flow_from_directory(train_path, target_size=(224, 224), classes=['DOLPHIN', 'SHARK', 'WHALE'], batch_size=4)
test_batch = ImageDataGenerator().flow_from_directory(test_path, target_size=(224, 224), classes=['DOLPHIN', 'SHARK', 'WHALE'], batch_size=10)

vgg16 = keras.applications.vgg16.VGG16()

my_model = Sequential()
for layer in vgg16.layers[:-1]:
    my_model.add(layer)

for layer in my_model.layers:
    layer.trainable = False

my_model.add(Dense(3, activation='softmax'))

my_model.compile(
    loss="categorical_crossentropy",
    optimizer=Adam(lr=0.00001), 
    metrics=['accuracy']
)

start = time.time()
# Train the model
my_model.fit(
    train_batches,
    steps_per_epoch=20,
    epochs=5,
    validation_data=valid_batches,
    validation_steps=4
)
这就是错误所在

Traceback (most recent call last):
  File "C:/Users/Arlex/PycharmProjects/CNN/VGG_ANIMALS/01_loading_images_training.py", line 61, in <module>
    validation_steps=4
  File "C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site-packages\keras\models.py", line 1002, in fit
    validation_steps=validation_steps)
  File "C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site-packages\keras\engine\training.py", line 1630, in fit
    batch_size=batch_size)
  File "C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site-packages\keras\engine\training.py", line 1476, in _standardize_user_data
    exception_prefix='input')
  File "C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site-packages\keras\engine\training.py", line 76, in _standardize_input_data
    data = [np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data]
  File "C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site-packages\keras\engine\training.py", line 76, in <listcomp>
    data = [np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data]
AttributeError: 'DirectoryIterator' object has no attribute 'ndim'
回溯(最近一次呼叫最后一次):
文件“C:/Users/Arlex/PycharmProjects/CNN/VGG_ANIMALS/01_loading_images_training.py”,第61行,in
验证步骤=4
文件“C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site packages\keras\models.py”,第1002行
验证步骤=验证步骤)
文件“C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site packages\keras\engine\training.py”,第1630行
批次大小=批次大小)
文件“C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site packages\keras\engine\training.py”,第1476行,在用户数据中
异常(前缀为“输入”)
文件“C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site packages\keras\engine\training.py”,第76行,输入数据
data=[np.expand_dims(x,1),如果x不是None,那么x.ndim==1 else x表示数据中的x]
文件“C:\Users\Arlex\PycharmProjects\CNN\venv\lib\site packages\keras\engine\training.py”,第76行,在
data=[np.expand_dims(x,1),如果x不是None,那么x.ndim==1 else x表示数据中的x]
AttributeError:“DirectoryIterator”对象没有属性“ndim”

您不能使用
模型。将
与生成器配合使用,因此您必须使用
模型。根据TF文档,此答案与应该执行的操作完全相反(目前)。这里的更多信息:@FedericoDorato抱歉,你弄错了,这个问题的答案是使用keras,而你指出的文档是针对tf.keras的,它们不是相同的库。