keras 预训练的 ResNet50 目标形状
keras pre-trained ResNet50 target shape
我正在尝试使用 ResNet50 预训练网络来解决分割问题。
我删除最后一层并添加我想要的层。但是当我尝试适应时,出现以下错误:
ValueError:检查目标时出错:预期 conv2d_1 的形状为 (16, 16, 1) 但得到的数组形状为 (512, 512, 1)
我有两个文件夹:images 和 masks。图像是 RGB,蒙版是灰度的。
所有图像的形状都是 512x512。
我不知道我哪里做错了。
任何帮助将不胜感激。
from keras.applications.resnet50 import ResNet50
image_input=Input(shape=(512, 512, 3))
model = ResNet50(input_tensor=image_input,weights='imagenet',include_top=False)
x = model.output
x = Conv2D(1, (1,1), padding="same", activation="sigmoid")(x)
model = Model(inputs=model.input, outputs=x)
model.summary()
conv2d_1 (Conv2D) (None, 16, 16, 1) 2049 activation_49[0][0]
for layer in model.layers[:-1]:
layer.trainable = False
for layer in model.layers[-1:]:
layer.trainable = True
model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])
您的网络输出形状为 (16, 16, 1)
,但您的 y
(目标)的形状为 (512, 512, 1)
运行下面看这个
from keras.applications.resnet50 import ResNet50
from keras.layers import Input
image_input=Input(shape=(512, 512, 3))
model = ResNet50(input_tensor=image_input,weights='imagenet',include_top=False)
model.summary()
# Output shows that the ResNet50 network has output of shape (16,16,2048)
from keras.layers import Conv2D
conv2d = Conv2D(1, (1,1), padding="same", activation="sigmoid")
conv2d.compute_output_shape((None, 16, 16, 2048))
# Output shows the shape your network's output will have.
您的 y
或您使用 ResNet50 的方式必须改变。阅读有关 ResNet50 的信息,看看您缺少什么。
我正在尝试使用 ResNet50 预训练网络来解决分割问题。 我删除最后一层并添加我想要的层。但是当我尝试适应时,出现以下错误:
ValueError:检查目标时出错:预期 conv2d_1 的形状为 (16, 16, 1) 但得到的数组形状为 (512, 512, 1)
我有两个文件夹:images 和 masks。图像是 RGB,蒙版是灰度的。 所有图像的形状都是 512x512。 我不知道我哪里做错了。
任何帮助将不胜感激。
from keras.applications.resnet50 import ResNet50
image_input=Input(shape=(512, 512, 3))
model = ResNet50(input_tensor=image_input,weights='imagenet',include_top=False)
x = model.output
x = Conv2D(1, (1,1), padding="same", activation="sigmoid")(x)
model = Model(inputs=model.input, outputs=x)
model.summary()
conv2d_1 (Conv2D) (None, 16, 16, 1) 2049 activation_49[0][0]
for layer in model.layers[:-1]:
layer.trainable = False
for layer in model.layers[-1:]:
layer.trainable = True
model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])
您的网络输出形状为 (16, 16, 1)
,但您的 y
(目标)的形状为 (512, 512, 1)
运行下面看这个
from keras.applications.resnet50 import ResNet50
from keras.layers import Input
image_input=Input(shape=(512, 512, 3))
model = ResNet50(input_tensor=image_input,weights='imagenet',include_top=False)
model.summary()
# Output shows that the ResNet50 network has output of shape (16,16,2048)
from keras.layers import Conv2D
conv2d = Conv2D(1, (1,1), padding="same", activation="sigmoid")
conv2d.compute_output_shape((None, 16, 16, 2048))
# Output shows the shape your network's output will have.
您的 y
或您使用 ResNet50 的方式必须改变。阅读有关 ResNet50 的信息,看看您缺少什么。