首页 > 解决方案 > keras 中的自定义 keras.applications 模型

问题描述

我想用来keras.applications.resnet50训练模型。

但在我的数据中,它们不仅是图像,表中还有一些变量项。

我看keras的文档,keras.layers.concatenate我扁平化图像项后可以将两层组合在一起。

keras.applications.resnet50不能连接变量项。

如何基于预训练模型定制层?

有我的演示代码打击:

import keras
from keras.models import Sequential, concatenate
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.utils import to_categorical
from keras.layers import Input
from keras.models import Model
from keras.applications.resnet50 import ResNet50
VariableSize = 16
ResNet = ResNet50(include_top=True, weights=None, input_tensor=None, input_shape=(64,64,3), pooling=None, classes=2)
ResNet.layers.pop()
VariableNet = Input(shape=(VariableSize,))
ModelNet = keras.layers.concatenate([ResNet, VariableNet])  ##  Error
##
##  And connect output layer before complie

标签: pythonkeras

解决方案


When you pass ResNet as input to keras.layers.concatenate, you are passing a full model instead of just a layer. To concatenate the output layer of ResNet with your variable length input, you can simply replace ResNet by ResNet.output as follows:

ModelNet = keras.layers.concatenate([ResNet.output, VariableNet])

推荐阅读