tensorflow中的conv1d和conv2d

本文详细解析了TensorFlow中一维卷积(conv1d)的使用方法,对比二维卷积(conv2d),阐述了conv1d在处理文本序列上的优势。通过具体示例,介绍了如何设置卷积核大小、步长、填充方式等参数,并展示了其在文本处理中的应用。
部署运行你感兴趣的模型镜像
  • 网上搜的一篇资料,还没看:tensorflow中一维卷积conv1d处理语言序列的一点记录
  • tensorflow中的conv1d和conv2d的区别:conv1d是单通道的,conv2d是多通道,所以conv1d适合处理文本序列,conv2d适合处理图像。
  • conv1d
  • import tensorflow as tf
    input = tf.Variable(tf.random_normal([1, 5, 20]))
    params1 = {"inputs": input, "filters": 2048, "kernel_size": 2,"strides":1,"activation": tf.nn.relu, "use_bias": True,"padding":'SAME'}
    op01 = tf.layers.conv1d(**params1)
    init = tf.initialize_all_variables()
    with tf.Session() as sess:
    sess.run(init)
    print(sess.run(tf.shape(op01)))
    >>>[1,5,2048]

输入input第一维为batch_size,此处为1,即只有一个样本,第二维和第三维分别表示输入的长和宽,在文本中就是word_embedding矩阵,句子长度为5,embedding维度为20。
在文本中,卷积的某一维大小往往为embedding长度,即在宽度上不需要窗口移动,宽度就是整个窗口。所以conv1d默认卷积的宽度就为embedding维度,长度是通过kernel_size来指定的,此处为2,即卷积核的大小为2*embedding_size。strides为步长,此处为1,即卷积核每隔一个单词移动一次。filters是卷积核的个数,即输出的维度。padding有valid和same两种选择,valid在长度方向(宽度方向不padding)不进行padding,而same则在长度方向进行padding,保证输入句子长度和卷积后输出的句子长度一致,此处为5。

  • conv2d
    #case 1
    #input输入是1张 3*3 大小的图片,图像通道数是5(batch,长,宽,输入通道数)
    #filter卷积核是 1*1 大小,数量是1(长,宽,输入通道数,输出通道数(卷积核个数))
    #strides步长是[1,1,1,1],第一维和最后一维保持1不变,第二维和第三维分别为长度方向和宽度方向的步长。
    #1张图最后输出的op1就是一个 shape为[1,3,3,1] 的张量,即得到一个3*3的feature map(batch,长,宽,输出通道数)
    input = tf.Variable(tf.random_normal([1, 3, 3, 5]))
    filter = tf.Variable(tf.random_normal([1, 1, 5, 1]))
    op1 = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1], padding='SAME')

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

TensorFlow中的conv1d是一种一维卷积操作,用于处理一维的输入数据。它可以应用于信号处理、文本处理等领域。在使用conv1d时,可以通过设置不同的填充方式来控制输出的维度。 引用\[1\]中的代码示例展示了使用valid填充方式的conv1d操作。在这种填充方式下,输入数据不进行填充,卷积核只在输入数据的有效区域内进行滑动计算。输出的维度会根据输入数据的长度卷积核的大小而变化。 引用\[2\]中的代码示例展示了使用same填充方式的conv1d操作。在这种填充方式下,输入数据会进行填充,使得输出的维度与输入数据的维度相同。填充的方式是根据卷积核的大小步长来确定的。 引用\[3\]中的代码示例展示了使用tf.nn.conv1d函数进行一维卷积操作的示例。其中,a表示需要被卷积的矩阵,kernel表示卷积核,conv1d表示进行conv1d卷积操作的结果。在这个示例中,使用的是valid填充方式,步长为1。 总结起来,TensorFlow中的conv1d是一种用于一维数据处理的卷积操作。可以通过设置不同的填充方式来控制输出的维度。 #### 引用[.reference_title] - *1* *2* [tensorflow中的 Conv1d Conv2d Conv3d](https://blog.youkuaiyun.com/qq_40107571/article/details/128344483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Tensorflow深度学习之二十七:tf.nn.conv1d](https://blog.youkuaiyun.com/DaVinciL/article/details/81359245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值