首页 > 解决方案 > 使用输入形状为 (192,192,3) 的 VGG16 进行微调时出现 InvalidArgumentError

问题描述

我正在使用多模态 MR 图像数据集。我不明白是什么导致训练期间出现此错误:

InvalidArgumentError:  logits and labels must have the same first dimension, got logits shape [64,4] and labels shape [9437184]    
sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits 

我的代码:

conv_base=VGG16(weights='imagenet',include_top=False, input_shape=(192,192,3))
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(512,activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(4, activation= 'softmax'))
model.compile(optimizer=optimizers.Adam(lr=3e-5), loss='sparse_categorical_crossentropy', metrics=['acc'])
h=model.fit(X_train, Y_train,batch_size=64,epochs=1,verbose=1,validation_data=(X_val,Y_val))

的形状X_train(162,192,192,3)

的形状Y_train(162,192,192,4)

标签: pythonkerastf.kerastransfer-learninginvalid-argument

解决方案


谢谢马尔科·塞利亚尼。为了社区的利益,在这里提供解决方案

conv_base=VGG16(weights='imagenet',include_top=False, input_shape=(192,192,3))
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(512,activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(4, activation= 'softmax'))
model.compile(optimizer=optimizers.Adam(lr=3e-5), loss='categorical_crossentropy', metrics=['acc'])
h=model.fit(X_train, Y_train,batch_size=64,epochs=1,verbose=1,validation_data=(X_val,Y_val))

推荐阅读