python - 使用中间层的输出进行新的训练(“模型”对象没有属性“形状”)
问题描述
我使用带有 keras 后端的 tensorflow 训练了一个 FCNN 模型。该模型由两个独立的网络组成(在同一个图中训练)。
该模型的两个中间层具有相同的形状 ((?,512, 24, 16), 'channel_first')。我想提取这两层(基于 2nd response Keras,How to get the output of each layer?)并使用密集层将它们相互映射:
intermediate_layer_net = Model(inputs=model.input,
outputs=model.get_layer(name='net1_bn7').output)
intermediate_layer_net2 = Model(inputs=model.input,
outputs=model.get_layer(name='net2_bn5').output)
mid_model_in = Input(shape=(512, 24, 16))
mid_model_dense = Dense(512,activation=None, use_bias=True, kernel_initializer="glorot_uniform", bias_initializer="zeros", kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, name='mid_dense')(mid_model_in)
mid_model = Model(inputs=[mid_model_in], outputs=[mid_model_dense])
mid_model.compile(loss=['mean_squared_error'], optimizer='Adam', metrics=['mae'])
history_mid= mid_model.fit(intermediate_layer_net, intermediate_layer_net2, batch_size=10, epochs=50, validation_split=0.2, shuffle=True)
当我运行上面的代码时,我得到了这个错误:AttributeError: 'Model' object has no attribute 'shape'
我如何传递形状?形状不应该包含在我从中提取输出层的第一个模型中吗?
解决方案
推荐阅读
- video - FFmpeg 无法将 MOD 转换为 MP4
- javascript - 如何在javascript中打印json的标题?
- reactjs - 你可能需要一个合适的加载器来处理这个文件类型——React
- javascript - 如何将服务器响应分配给对象
- prolog - 概率编程:具体化分布和东西?
- python-3.x - 如何使用 python3 在 TinyDB 中创建嵌套值?
- r - 为什么 R glmnet predict 给出一个矩阵而不是一列?
- excel - 从 Excel 粘贴后退出 Word 表
- java - 按字母顺序重新排列字符串中的单词
- mysql - mysql表与主键和外键的关系