下面是我使用vit_b16模型的代码部分。该模型的输入是128x128x3多光谱图像。
!pip install vit-keras
!pip install tensorflow_addons
from vit_keras import vit, utils
IMG_SIZE = (128,128)
vit_base_model = vit.vit_b16(image_size=IMG_SIZE,pretrained=True,include_top=False,pretrained_top=False)
vit_model = Model(inputs=vit_base_model.input, outputs=vit_base_model.layers[18].output)
model=keras.models.Sequential()
model.add(vit_model)
model.add(Flatten())
model.add(Dense(226))
model.add(Dropout(0.5))
model.add(Dense(226))
model.summary()
model.compile(
optimizer=keras.optimizers.Adam(),
loss=keras.losses.BinaryCrossentropy(from_logits=True),
metrics=[keras.metrics.BinaryAccuracy()],
)
epochs = 20
model.fit(Ref_L7,hyp_patches,epochs=epochs, validation_data=0.1)我从model.compile部件中得到了这个错误。

hyp_patches.shape=(128,128,262) Ref_l7.shape=(128,128,3)
然后利用主成分分析,将Ref_l7转换成3个波段。这就是我们输入到vit模型中的输入。
发布于 2022-02-03 08:41:12
问题在于您的数据大小,您可以尝试这样做,您在fit中的数据形状也应该是(numberofImages,128,128,3)。
IMG_SIZE = (128,128,3)
vit_base_model = vit.vit_b16(image_size=IMG_SIZE,pretrained=True,include_top=False,pretrained_top=False)
vit_model = Model(inputs=vit_base_model.input, outputs=vit_base_model.layers[18].output)
model=keras.models.Sequential()
model.add(vit_model)
model.add(Flatten())
model.add(Dense(226))
model.add(Dropout(0.5))
model.add(Dense(226))
model.summary()
model.compile(
optimizer=keras.optimizers.Adam(),
loss=keras.losses.BinaryCrossentropy(from_logits=True),
metrics=[keras.metrics.BinaryAccuracy()],
)
epochs = 20
model.fit(Ref_L7,hyp_patches,epochs=epochs, validation_data=0.1)在添加通道3时更改IMAGE_SIZE。此外,打印您的形状的Ref_L7,hyp_patches,这将给你更多的信息,什么是错的。
https://stackoverflow.com/questions/70954628
复制相似问题