keras concatenate_笔记 | 神经网络中的concatenate具体做了啥

在知乎上写小问题的记录一般是没什么人点赞的,而又因为没有阅读数的显示,经常会感觉这篇文章就gg了,但还是一点点地记录学习的过程。

自从Lab转为以Deep Learning为主之后,就经常会看到如DenseNet用conatenate操作或者某些Net用add操作,所以想来记录一下concatenate操作做了啥。

Neural Network中的concatenate一般就是用来将特征联合,多个卷积特征提取框架提取的特征融合或者是讲输出层的信息进行融合[2]。

那这个联合是什么意思呢?

其实就是维度的一个联合,以Keras.concatenate()为例子:

import numpy as np
import keras.backend as K
import tensorflow as tf

a = K.variable(np.array([[[1, 2], [2, 3]], [[4, 4], [5, 3]]]))
b = K.variable(np.array([[[7, 4], [8, 4]], [[2, 10], [15, 11]]]))

c1 = K.concatenate([a, b], axis=0)
c2 = K.concatenate([a, b], axis=1)
c3 = K.concatenate([a, b], axis=2)
#试试默认的参数
c4 = K.concatenate([a, b])

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(c1))
    print()
    print(sess.run(c2))
    print()
    print(sess.run(c3))
    print()
    print(sess.run(c4))

以上的axis=0表示列维,1表示行维,沿着通道维度连接两个张量。

输出的结果会是这样的:

[[[ 1.  2.]
  [ 2.  3.]]
 [[ 4.  4.]
  [ 5.  3.]]
 [[ 7.  4.]
  [ 8.  4.]]
 [[ 2. 10.]
  [15. 11.]]]

[[[ 1.  2.]
  [ 2.  3.]
  [ 7.  4.]
  [ 8.  4.]]
 [[ 4.  4.]
  [ 5.  3.]
  [ 2. 10.]
  [15. 11.]]]

[[[ 1.  2.  7.  4.]
  [ 2.  3.  8.  4.]]
 [[ 4.  4.  2. 10.]
  [ 5.  3. 15. 11.]]]

[[[ 1.  2.  7.  4.]
  [ 2.  3.  8.  4.]]
 [[ 4.  4.  2. 10.]
  [ 5.  3. 15. 11.]]]

另外,除联合维度之外其它维度都必须相等。

先写到这里吧,感兴趣的话可以看这篇文章keras中的K.concatenate()详解

参考文献:

[1]:keras中的K.concatenate()详解

[2]:神经网络中concatenate和add层的不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值