Python 使用ResNet50可将不同输入的次数成倍增加(权重共享)

Python 使用ResNet50可将不同输入的次数成倍增加(权重共享),python,tensorflow,keras,neural-network,tf.keras,Python,Tensorflow,Keras,Neural Network,Tf.keras,我想对不同的输入多次使用相同的ResNet50,即共享权重。下面是我的coce,但我收到了错误消息AttributeError:“Tensor”对象没有行resnet\u x=resnet\u x.output的属性“output” 我必须改变什么才能让它工作 from tensorflow.keras.applications.resnet50 import ResNet50 from tensorflow.keras.layers import Input from tensorflow.k

我想对不同的输入多次使用相同的ResNet50,即共享权重。下面是我的coce,但我收到了错误消息
AttributeError:“Tensor”对象没有行
resnet\u x=resnet\u x.output的属性“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\u XXX=resnet\u 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()])