tensorflow conv1d的理解和实现

参考:1、https://blog.csdn.net/qq_16320025/article/details/89396718?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

 

2、https://blog.csdn.net/weixin_40532625/article/details/105628460?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase

 

在自然语言处理(NLP)领域,甚至图像处理的时候,我们可能会用到一维卷积(conv1d).以为卷积可以看作是二维卷积(conv2d)的简化,二维卷积是将一个特征图在width和height两个方向上进行滑动窗操作,对应位置进行相乘求和;而一维卷积则只是在width或者说height方向上进行滑动窗口并相乘求和

#  tensorflow中的 conv1d 和conv2d 的区别:conv1d是单通道的,conv2d是多通道,
#  conv1d适合处理文本序列,conv2d适合处理图像。

# tf.nn.conv1d(value, filters, stride, padding)
# value 的形状:[batch, in_width, in_channels]
#
# batch 表示多少个样本
# in_width 表示样本的宽度
# in_channels 表示样本有多少个通道
# 可看作一个平铺开的二维数组:[batch, 行数, 列数];
#
# filter 的形状:[filter_width, in_channels, out_channels]
#
# filter_width 表示与 value 进行卷积的行数/每次
# in_channels 表示 value 一共有多少列 = value 中的 in_channels
# out_channels 表示卷积核数目
#  
# stride :步长

# output 的形状:[batch, out_width, out_channels]

def my_conv1d_column(input_v, weight, bias, step_size=1):
    dims_v = input_v.shape
    if len(dims_v) == 2:
        input_v = tf.expand_dims(input_v, 0)  # 0表示第一维

    dims_w = weight.shape
    if len(dims_w) == 2:
        weight = tf.expand_dims(weight, 0)  # 0表示第一维
    conv_result = tf.nn.conv1d(input_v, weight, step_size, 'VALID')

    dims_b = bias.shape
    if len(dims_b) == 2:
        bias = tf.expand_dims(bias, 0)  # 0表示第一维

    conv_result = tf.add(conv_result, bias)
    return conv_result

 

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值