使用ResNet50多次不同的输入(权重共享)



我想使用相同的ResNet50多次不同的输入,即权重共享。下面是我的代码,但我得到resnet_x = resnet_x.outputAttributeError: 'Tensor' object has no attribute 'output'的错误信息。

我需要改变什么来使它工作?

from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.layers import Input
from tensorflow.keras.layers import GlobalAveragePooling2D
import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
input_tensor_x = Input(shape=(96,96,3))
input_tensor_y = Input(shape=(96,96,3))
input_tensor_z = Input(shape=(96,96,3))
base_model = ResNet50(weights=None, include_top=False, input_shape=(96,96,3))
resnet_x = base_model(input_tensor_x)
resnet_x = resnet_x.output
resnet_x = GlobalAveragePooling2D()(resnet_x)
resnet_x = Dropout(0.5)(resnet_x)
resnet_y = base_model(input_tensor_y)
resnet_y = resnet_y.output
resnet_y = GlobalAveragePooling2D()(resnet_y)
resnet_y = Dropout(0.5)(resnet_y)
resnet_z = base_model(input_tensor_z)
resnet_y = resnet_y.output
resnet_y = GlobalAveragePooling2D()(resnet_y)
resnet_y = Dropout(0.5)(resnet_y)
merge_layer = tf.keras.layers.Concatenate()([resnet_x, resnet_y, resnet_z])
output_tensor = Dense(self.num_classes, activation='softmax')(merge_layer)
# instantiate and compile model
cnn_model = Model(inputs=[input_tensor_x, input_tensor_y, input_tensor_z], outputs=output_tensor)
opt = Adam()
cnn_model.compile(loss=categorical_crossentropy, optimizer=opt, metrics=['accuracy', tf.keras.metrics.AUC()])

简单地删除resnet_XXX = resnet_XXX.output行完成工作。注意变量的名称(在resnet_z层下面)

input_tensor_x = Input(shape=(96,96,3))
input_tensor_y = Input(shape=(96,96,3))
input_tensor_z = Input(shape=(96,96,3))
base_model = ResNet50(weights=None, include_top=False, input_shape=(96,96,3))
resnet_x = base_model(input_tensor_x)
resnet_x = GlobalAveragePooling2D()(resnet_x)
resnet_x = Dropout(0.5)(resnet_x)
resnet_y = base_model(input_tensor_y)
resnet_y = GlobalAveragePooling2D()(resnet_y)
resnet_y = Dropout(0.5)(resnet_y)
resnet_z = base_model(input_tensor_z)
resnet_z = GlobalAveragePooling2D()(resnet_z)
resnet_z = Dropout(0.5)(resnet_z)
merge_layer = tf.keras.layers.Concatenate()([resnet_x, resnet_y, resnet_z])
output_tensor = Dense(10, activation='softmax')(merge_layer)
# instantiate and compile model
cnn_model = Model(inputs=[input_tensor_x, input_tensor_y, input_tensor_z], outputs=output_tensor)
opt = Adam()
cnn_model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy', tf.keras.metrics.AUC()])

最新更新