【发布时间】:2021-08-04 22:48:47
【问题描述】:
我想重新使用 MobiletNetv2 的预训练权重,但图像具有 12 个通道。我知道这需要增加重量,但这没关系,因为无论如何我都想重新训练。我找不到让它工作的方法。
import tensorflow as tf
class CNN(tf.keras.Model):
def __init__(self):
super(CNN, self).__init__()
self.input_layer = tf.keras.layers.InputLayer(input_shape=(None, 224, 224, 12))
self.base = tf.keras.applications.MobileNetV2(input_shape=(224, 224, 3),
include_top=False,
weights='imagenet')
_ = self.base._layers.pop(0)
self.flat1 = tf.keras.layers.Flatten()
self.dens3 = tf.keras.layers.Dense(10)
def call(self, x, **kwargs):
x = self.input_layer(x)
x = self.base(x)
x = self.flat1(x)
x = self.dens3(x)
return x
model = CNN()
model.build(input_shape=(None, 224, 224, 12))
ValueError: Input 0 is in compatible with layer mobilenetv2_1.00_224: expected shape=(None, 224, 224, 3), found shape=(None, 224, 224, 12)
我尝试像其他答案一样弹出第一层。
【问题讨论】:
标签: python tensorflow keras keras-layer