深度学习面试题23:批次张量和卷积核的简易定义方式

目录

  直接定义的缺点

  简易定义的方式

  参考资料



直接定义的缺点

在tensorflow中假设有一批输入为:

其定义如下:

tf.constant([
    [
        [
            [3, 1, -3],
            [1, -1, 7]
        ],
        [
            [-2, 2, -5],
            [2, 7, 3]
        ]
    ],
    [
        [
            [-1, 3, 1],
            [-3, -8, 6]
        ],
        [
            [4, 6, 8],
            [5, 9, -5]
        ]
    ]
], tf.float32)

这是一个4维张量,中括号的层次比较多,因此定义起来很容易写错;另外一批卷积核的定义方式和他不同,这也增加了定义的难度。

批次输入的张量的定义方式为:[batch, in_height, in_width, in_channels]

多个卷积核的定义方式为:[filter_height, filter_width, in_channels, out_channels]

返回目录


简易定义的方式

对一批输入:

按照图中蓝色的顺序声明一个一维张量,然后按照[batch, in_height, in_width, in_channels],对一维张量reshape。

对一批卷积核:

按照图中红色的顺序声明一个一维张量,然后按照[filter_height, filter_width, in_channels, out_channels],对一维张量reshape。

这样的话不需要写很多行并且包含复杂中括号关系的代码,看着张量能快速写出对应声明,提高写代码的效率,另外出错的概率会降低

import tensorflow as tf

# [batch, in_height, in_width, in_channels]
input = tf.constant([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], tf.float32)
input = tf.reshape(input,[2,2,2,2])
print(input.shape)

# [filter_height, filter_width, in_channels, out_channels]
kernel = tf.constant([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], tf.float32)
kernel = tf.reshape(kernel,[2,2,2,2])
print(kernel.shape)

print(tf.Session().run(tf.nn.conv2d(input,kernel,[1,1,1,1],"VALID")))

返回目录


参考资料

《图解深度学习与神经网络:从张量到TensorFlow实现》_张平

返回目录

原文地址:https://www.cnblogs.com/itmorn/p/11250050.html

时间: 2024-08-30 06:53:06

深度学习面试题23:批次张量和卷积核的简易定义方式的相关文章

深度学习面试题19:1*1卷积核的作用

目录 举例 在Inception module上的应用 参考资料 可以减少计算量,可以增加非线性判别能力 举例 假设有1个高为30.宽为40,深度为200的三维张量与55个高为5.宽为5.深度为200的卷积核same卷积,步长=1,则结果是高为30.宽为40.深度为55的三维张量,如图所示: 该卷积过程的乘法计算量大约为5*5*200*30*40*55=330000000,这个计算量很大. 接着,我们可以考虑第二种卷积过程,先利用1*1的卷积核在深度上降维,然后升维: 上述卷积过程的计算量大约为

深度学习面试题21:批量归一化(Batch Normalization,BN)

目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 BN在GoogLeNet中的应用 BN的由来 BN是由Google于2015年提出,论文是<Batch Normalization_ Accelerating Deep Network Training by Reducing Internal Covariate Shift>,这是一个深度神经网络训练的技巧,主要是让数据的分布变得一致,从而使得

深度学习面试题27:非对称卷积(Asymmetric Convolutions)

目录 产生背景 举例 参考资料 产生背景 之前在深度学习面试题16:小卷积核级联卷积VS大卷积核卷积中介绍过小卷积核的三个优势: ①整合了三个非线性激活层,代替单一非线性激活层,增加了判别能力. ②减少了网络参数. ③减少了计算量 在<Rethinking the Inception Architecture for Computer Vision>中作者还想把小卷积核继续拆解,从而进一步增强前面的优势 返回目录 举例 一个3*3的卷积可以拆解为:一个3*1的卷积再串联一个1*3的卷积,实验证

深度学习面试题13:AlexNet(1000类图像分类)

目录 网络结构 两大创新点 参考资料 第一个典型的CNN是LeNet5网络结构,但是第一个引起大家注意的网络却是AlexNet,Alex Krizhevsky其实是Hinton的学生,这个团队领导者是Hinton,于2012年发表论文. AlexNet有60 million个参数和65000个 神经元,五层卷积,三层全连接网络,最终的输出层是1000通道的softmax.AlexNet利用了两块GPU进行计算,大大提高了运算效率,并且在ILSVRC-2012竞赛中获得了top-5测试的15.3%

深度学习面试题12:LeNet(手写数字识别)

目录 神经网络的卷积.池化.拉伸 LeNet网络结构 LeNet在MNIST数据集上应用 参考资料 LeNet是卷积神经网络的祖师爷LeCun在1998年提出,用于解决手写数字识别的视觉任务.自那时起,CNN的最基本的架构就定下来了:卷积层.池化层.全连接层.如今各大深度学习框架中所使用的LeNet都是简化改进过的LeNet-5(-5表示具有5个层),和原始的LeNet有些许不同,比如把激活函数改为了现在很常用的ReLu. 神经网络的卷积.池化.拉伸 前面讲了卷积和池化,卷积层可以从图像中提取特

深度学习面试题16:小卷积核级联卷积VS大卷积核卷积

目录 感受野 多个小卷积核连续卷积和单个大卷积核卷积的作用相同 小卷积核的优势 参考资料 感受野 在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小.再通俗点的解释是,特征图上的一个点对应输入图上的区域,如下图所示: 返回目录 多个小卷积核连续卷积和单个大卷积核卷积的作用相同 像LeNet.AlexNet网络,都是用了较大的卷积核,目的是提取出输入图像更大邻域范围的信息,一般是卷积与池化操

深度学习面试题18:网中网结构(Network in Network)

目录 举例 参考资料 网中网结构通过多个分支的运算(卷积或池化),将分支上的运算结果在深度上连接 举例 一个3*3*2的张量, 与3个1*1*2的卷积核分别same卷积,步长=1, 与2个2*2*2的卷积核分别same卷积,步长=1, 与1个3*3*2的掩码最大值same池化,步长=1, 将得到的这3个结果在深度方向上拼接 GoogLeNet是基于类似网中网模块设计的网络结构,在GoogLeNet中该模块称为 Inception Module,多个Inception Module 模块可以组合成

深度学习面试题25:分离卷积(separable卷积)

目录 举例 单个张量与多个卷积核的分离卷积 参考资料 举例 分离卷积就是先在深度上分别卷积,然后再进行卷积,对应代码为: import tensorflow as tf # [batch, in_height, in_width, in_channels] input =tf.reshape(tf.constant([2,5,3,3,8,2,6,1,1,2,5,4,7,9,2,3,-1,3], tf.float32),[1,3,3,2]) # [filter_height, filter_wid

深度学习面试题29:GoogLeNet(Inception V3)

目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深度学习面试题26:GoogLeNet(Inception V2)>中对前两个Inception版本做了介绍,下面主要阐述V3版本的创新点 使用非对称卷积分解大filters InceptionV3中在网络较深的位置使用了非对称卷积,他的好处是在不降低模型效果的前提下,缩减模型的参数规模,在<深度学