Tensorflow ValueError,检查目标时出错:预期稠密_1有4个维度

Tensorflow ValueError,检查目标时出错:预期稠密_1有4个维度,tensorflow,keras,deep-learning,conv-neural-network,transfer-learning,Tensorflow,Keras,Deep Learning,Conv Neural Network,Transfer Learning,我正在尝试微调MobileNet,但收到以下错误: ValueError,检查目标时出错:预期密集_1有4个维度,但得到了形状为(10,14)的数组 与我设置目录迭代器的方式有冲突吗 train\u batches=ImageDataGenerator(预处理\u函数=keras.applications.mobilenet\u v2.preprocess\u输入)。从\u目录流出( 列车路径,目标尺寸=(224224),批量尺寸=10) 有效的\u批处理=ImageDataGenerator

我正在尝试微调MobileNet,但收到以下错误:

ValueError,检查目标时出错:预期密集_1有4个维度,但得到了形状为(10,14)的数组
与我设置目录迭代器的方式有冲突吗

train\u batches=ImageDataGenerator(预处理\u函数=keras.applications.mobilenet\u v2.preprocess\u输入)。从\u目录流出(
列车路径,目标尺寸=(224224),批量尺寸=10)
有效的\u批处理=ImageDataGenerator(预处理\u函数=keras.applications.mobilenet\u v2.preprocess\u输入)。来自\u目录的流(
有效路径,目标大小=(224224),批大小=10)
test\u batches=ImageDataGenerator(预处理\u函数=keras.applications.mobilenet\u v2.preprocess\u输入)。从\u目录流出(
测试路径,目标大小=(224224),批大小=10,随机播放=False)
我的新瓶颈层如下所示:

x=mobile.layers[-6]。输出
预测=密集(14,激活='softmax')(x)
模型=模型(输入=移动输入,输出=预测)
由于并考虑到
x
是4D张量,因此
预测
张量也将是4D张量。这就是为什么模型期望4D输出(即
期望密集_1有4个维度
),但标签是2D的(即
但得到了形状为(10,14)的数组
)。要解决这个问题,需要将
x
作为二维张量。一种方法是使用
展平层:

x=mobile.layers[-6]。输出
x=展平()(x)
预测=密集(14,激活='softmax')(x)