Que*_*nie 2 loss deep-learning keras tensorflow
我正在尝试为视频输入的模型训练实现 VGG 感知损失。我实现了感知损失,就像问题AttributeError: 'Tensor' object has no attribute '_keras_history'中的建议一样:
我的 mainModel 如下图所示: Graph of mainModel
输入大小为(bathsize, frame_num, row, col, channel). 我想要得到中框的感知损失,即frame_num/2。
因此,我实现了以下损失模型:
lossModel = VGG19(weights='imagenet')
lossModel = Model(inputs=lossModel.input,outputs=lossModel.get_layer('block3_conv4').output)
lossOut = lossModel(mainModel.output[:,frame_num/2])
fullModel = Model(mainModel.input,lossOut)
Run Code Online (Sandbox Code Playgroud)
但我在该行中遇到了一条错误消息fullModel = Model(mainModel.input, lossOut):
attributeError:“张量”对象没有属性“_keras_history”
顺便说一句,我使用的 keras 版本是“2.0.9”。
有人能帮我解决这个问题吗?
多谢!!
大多数时候这意味着您在层外进行计算。
keras 模型需要由 keras 层组成。不允许在层外进行操作。
进行所有计算并将它们放入Lambda层内:https://keras.io/layers/core/#lambda
这里,mainModel.output[:,frame_num/2]是层外的操作。
将其传输到 Lambda 层:
lossModel = VGG19(weights='imagenet')
lossModel = Model(inputs=lossModel.input,outputs=lossModel.get_layer('block3_conv4').output)
#you must connect lossmodel and mainmodel somewhere!!!
output = lossModel(mainModel.output)
output = Lambda(lambda x: x[:,frame_num/2])(output)
fullModel = Model(mainModel.input, output)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5410 次 |
| 最近记录: |