keras concatenate_理解 Keras 中 "Layer" 的大小写区别

8e608cedfa9b04c7dfad0c80d16ef48b.png

keras 中有两个基本的概念:LayerTensor

Layer :是模型的组成单位,用于构建神经网络框架 在 keras 中用 大写的 module 表示,用于搭建纯模型框架,涉及到计算时使用属性 input 或 output 调出其 Tensor 如以下代码,多用于简单的 Sequential 结构(导入模块部分省略,python=3.7, keras=2.2)

n_in 

上述代码使用了大写的 Concatenate function 表示一个 Layer,这个 function 的参数是元素为 Layer 的 list;

输出的结果是可以构筑 model 的 Layer,这样一个完整的 神经网络 model 完成了

如果要使用小写的 concatenate function,这个 function 里面的参数是元素为 Tensor 的 list

  • Sequential function 返回模型的结构
model_1 

返回值为 sequential 序列模型储存位置

若将它储存到模型中

model 

model.summary() 最后一行是

sequential_1 

model_1 的 layers 属性返回一个包含其所用有的所有层的列表

type

把两个 layer 用 Concatenate function 串联起来

model_2 = model_1.layers[0]
model_2 = Dense(2)
#two statements above are as the same as each other
#the first code script using the core layers
model_1 = Dense(n_out, input_shape = (n_in,))
model_2 = Dense(n_out, input_dim = n_in)
model = Sequential()
model.add(Concatenate([model_1, model_2]))
model.compile(loss='categorical_crossentropy', optimizer='SGD')

model_2 还是 Layer,若要使用其产生的 Tensor

则使用

model_2

回到刚开始提出的问题,如果要使用小写的concatenate function,则要使用Tensor

model
  • 不能像上面这样写,因为 concatenate function 返回的不是 Layer,而是 Tensor
  • 若要将 Tensor 转化为 Layer,则需要用到 Lambda function(同样需要首字母大写)
x 

另一种组成神经网络模型的方法是用 Keras functional API

keras functional API 使用 Tensor传递的方法构建神经网络框架

input_shape 

这里用到了大写的 Concatenate function,将 Tensor 参数放在 function 后面调用,返回的同样是 Tensor

  • 如果使用小写的 concatenate function,这个 function 本身返回的就是 Tensor
input_shape 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值