当前位置: 首页 > news >正文

黄冈做网站的公司网页微信支付

黄冈做网站的公司,网页微信支付,wordpress注入广告,常见的网络推广工具一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例#xff0c;介绍TensorFlow的padding算法。 1. 引言 tf.nn.conv2d and tf.nn.max_pool2d 函数都有padding参数#xff0c;在执行函数之前#xff0c;都需要进行填充padd…一、参考资料 notes_on_padding_2 二、TensorFlow的padding算法 本文以TensorFlow v2.14.0版本为例介绍TensorFlow的padding算法。 1. 引言 tf.nn.conv2d and tf.nn.max_pool2d 函数都有padding参数在执行函数之前都需要进行填充padding零元素操作。padding参数可以是 VALID 和 SAME VALID 表示no-padding不填充SAME表示需要padding。 对于convolutions用零元素填充对于pools填充值可以忽略例如max_pool其滑动窗口会忽略填充值。 2. VALID padding paddingVALID 表示不填充这种情况下输出的尺寸一般小于输入的尺寸。 对于 conv2d它的输出尺寸为 out_height ceil((in_height - filter_height 1) / stride_height) out_width ceil((in_width - filter_width 1) / stride_width)其中filter_height and filter_width 表示滤波器fillter的尺寸。 3. SAME padding paddingSAME 可以对空间的各个维度进行padding。对于 conv2d它的输出尺寸为 out_height ceil(in_height / stride_height) out_width ceil(in_width / stride_width)重要说明如果不关注padding的内部实现机制该结论可以直接使用。 对于每个维度方向的padding可以表示为 if (in_height % strides[1] 0):pad_along_height max(filter_height - stride_height, 0) else:pad_along_height max(filter_height - (in_height % stride_height), 0) if (in_width % strides[2] 0):pad_along_width max(filter_width - stride_width, 0) else:pad_along_width max(filter_width - (in_width % stride_width), 0)最终对于 top, bottom, left and right 各维度的padding为 pad_top pad_along_height // 2 pad_bottom pad_along_height - pad_top pad_left pad_along_width // 2 pad_right pad_along_width - pad_left其中the division by 2 表示两侧(top vs bottom, right vs left)的padding而 the bottom and right sides 两侧需要填充剩余的padding。例如when pad_along_height is 5, we pad 2 pixels at the top and 3 pixels at the bottom. 注意该种padding方式与其他的深度学习框架例如PyTorch and Caffe不同其他的深度学习框架需要明确padding的数量且在两侧padding相同的数量。 Note that this is different from existing libraries such as PyTorch and Caffe, which explicitly specify the number of padded pixels and always pad the same number of pixels on both sides. 3.1 代码示例 in_height 5 filter_height 3 stride_height 2in_width 2 filter_width 2 stride_width 1inp tf.ones((2, in_height, in_width, 2)) filter tf.ones((filter_height, filter_width, 2, 2)) strides [stride_height, stride_width] output tf.nn.conv2d(inp, filter, strides, paddingSAME) output.shape[1] # output_height: ceil(5 / 2)3output.shape[2] # output_width: ceil(2 / 1)23.2 计算padding尺寸 已知条件 (in_height, in_width)(5, 2) (filter_height, filter_width)(3, 2) (strides[1], strides[2])(2, 1)先计算Height方向的padding可得 in_height % strides[1] 5%2 1则满足以下公式 pad_along_height max(filter_height - (in_height % stride_height), 0)代入公式可得 pad_along_height max(3-(5%2), 0)max(3-1, 0)2 pad_top pad_along_height // 2 2 // 2 1 pad_bottom pad_along_height - pad_top 2-1 1由此可知在 top 方向填充1在 bottom 方向填充1。 再计算 Width 方向的padding可得 in_width % strides[2] 2%1 0则满足以下公式 pad_along_width max(filter_width - stride_width, 0)代入公式可得 pad_along_heght max(2-1, 0) 1 pad_left pad_along_width // 2 1 // 2 0 pad_right pad_along_width - pad_left 1-0 1由此可知在 left 方向不填充在 right 方向填充1。 综上所述填充的示意图如下 填充之后输入尺寸由(5,2) 扩充为 (7,3)。 3.3 计算output尺寸 标准卷积输出尺寸的计算公式 o i 2 p − k s 1 i size of input o size of output p p a d d i n g k size of kernel s s t r i d e s ( 1 ) o\frac{i2p-k}s1 \quad \begin{array}{l} \\i\textit{size of input}\\o\textit{size of output}\\ppadding\\k\textit{size of kernel}\\sstrides\end{array}\quad (1) osi2p−k​1isize of inputosize of outputppaddingksize of kernelsstrides​(1) 计算Height方向的输出尺寸可得 o u t _ h e i g h t i n _ h e i g h t ( p a d _ t o p p a d _ b o t t o m ) − f i l t e r _ h e i g h t s t r i d e s [ 1 ] 1 ( 2 ) out\_height\frac{in\_height(pad\_toppad\_bottom)-filter\_height}{strides[1]}1\quad (2) out_heightstrides[1]in_height(pad_toppad_bottom)−filter_height​1(2) 将已知条件代入上述 公式 ( 2 ) 公式(2) 公式(2) 中可得 o u t _ h e i g h t 5 ( 1 1 ) − 3 2 1 3 out\_height\frac{5(11)-3}{2}13 out_height25(11)−3​13 计算Width方向的输出尺寸可得 o u t _ w i d t h i n _ w i d t h ( p a d _ l e f t p a d _ r i g h t ) − f i l t e r _ w i d t h s t r i d e s [ 2 ] 1 ( 3 ) out\_width\frac{in\_width(pad\_leftpad\_right)-filter\_width}{strides[2]}1\quad (3) out_widthstrides[2]in_width(pad_leftpad_right)−filter_width​1(3) 将已知条件代入上述 公式 ( 3 ) 公式(3) 公式(3) 中可得 o u t _ w i d t h 2 ( 0 1 ) − 2 1 1 2 out\_width\frac{2(01)-2}{1}12 out_width12(01)−2​12 综上所述输出尺寸为(3, 2)与代码验证的结果一致。 4. Explicit padding 在TensorFlow中也可以指定padding的数量。但需要注意的是padding 参数为 list 类型而不是Tensor且该参数的格式与 tf.pad 相同。 对于 conv2d当 data_formatNHWCpadding 的参数格式为 [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]] 第一个 [[0, 0]] 表示 batch维度上no-padding不填充最后一个 [[0, 0]] 表示 channel 维度上no-padding不填充。 For example, in the 2D case, the list is in the format [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]] when data_format is its default value of NHWC. The two [0, 0] pairs indicate the batch and channel dimensions have no padding, which is required, as only spatial dimensions can have padding. 4.1 代码示例 inp tf.ones((1, 3, 3, 1)) filter tf.ones((2, 2, 1, 1)) strides [1, 1] padding [[0, 0], [1, 2], [0, 1], [0, 0]] output tf.nn.conv2d(inp, filter, strides, paddingpadding) tuple(output.shape) # (1, 5, 3, 1)# Equivalently, tf.pad can be used, since convolutions pad with zeros. inp tf.pad(inp, padding) # VALID means to use no padding in conv2d (we already padded inp) output2 tf.nn.conv2d(inp, filter, strides, paddingVALID) tf.debugging.assert_equal(output, output2)4.2 计算padding尺寸 已知条件 (in_height, in_width)(3, 3) (filter_height, filter_width)(2, 2) (strides[1], strides[2])(1, 1) (pad_top, pad_bottom)(1, 2) (pad_left, pad_right)(0, 1)从已知条件中可以看出在 top 方向填充1在 bottom 方向填充2。在 left 方向不填充在 right 方向填充1。 综上所述填充的示意图如下 填充之后输入尺寸由(3,3) 扩充为 (6,4)。 4.3 计算output尺寸 将已知条件代入上述 公式 ( 2 ) 公式(2) 公式(2) 中可得 o u t _ h e i g h t 3 ( 1 2 ) − 2 1 1 5 out\_height\frac{3(12)-2}{1}15 out_height13(12)−2​15 将已知条件代入上述 公式 ( 3 ) 公式(3) 公式(3) 中可得 o u t _ w i d t h 3 ( 0 1 ) − 2 1 1 3 out\_width\frac{3(01)-2}{1}13 out_width13(01)−2​13 综上所述输出尺寸为(5, 3)与代码验证的结果一致。 5. 区分卷积层和池化层中的padding 卷积层与池化层中的padding不一样。对于卷积层以零元素进行padding再与kernel相乘卷积操作。对于池化层没有相乘的过程。例如对于一个4x4的 average pooling其padding对最终结果没有影响。 5.1 代码示例 x_in np.array([[[[2], [2]],[[1], [1]],[[1], [1]]]]) kernel_in np.array([ # simulate the avg_pool with conv2d[ [[0.25]], [[0.25]] ],[ [[0.25]], [[0.25]] ]]) x tf.constant(x_in, dtypetf.float32) kernel tf.constant(kernel_in, dtypetf.float32) conv_out tf.nn.conv2d(x, kernel, strides[1, 1, 1, 1], paddingSAME) pool_out tf.nn.avg_pool(x, [2, 2], strides[1, 1, 1, 1], paddingSAME) print(conv_out.shape, pool_out.shape) # (1, 3, 2, 1) (1, 3, 2, 1) tf.reshape(conv_out, [3, 2]).numpy() # conv2d takes account of paddingarray([[1.5, 0.75],[1., 0.5],[0.5, 0.25]], dtypefloat32) tf.reshape(pool_out, [3, 2]).numpy() # avg_pool excludes paddingarray([[1.5, 1.5],[1., 1.],[1., 1.0]], dtypefloat32)5.2 计算padding尺寸 已知条件 (in_height, in_width)(3, 2) (filter_height, filter_width)(2, 2) (strides[1], strides[2])(1, 1)先计算Height方向的padding可得 in_height % strides[1] 3%1 0则满足以下公式 pad_along_height max(filter_height - stride_height, 0)代入公式可得 pad_along_height max(2-1, 0) 1 pad_top pad_along_height // 2 1 // 2 0 pad_bottom pad_along_height - pad_top 1-0 1由此可知在 top 方向填充0在 bottom 方向填充1。 再计算 Width 方向的padding可得 in_width % strides[2] 2%1 0则满足以下公式 pad_along_width max(filter_width - stride_width, 0)代入公式可得 pad_along_heght max(2-1, 0) 1 pad_left pad_along_width // 2 1 // 2 0 pad_right pad_along_width - pad_left 1-0 1由此可知在 left 方向不填充在 right 方向填充1。 综上所述填充的示意图如下 填充之后输入尺寸由(3,2) 扩充为 (4,3)。 5.3 计算output尺寸 将已知条件代入上述 公式 ( 2 ) 公式(2) 公式(2) 中可得 o u t _ h e i g h t 3 ( 0 1 ) − 2 1 1 3 out\_height\frac{3(01)-2}{1}13 out_height13(01)−2​13 将已知条件代入上述 公式 ( 3 ) 公式(3) 公式(3) 中可得 o u t _ w i d t h 2 ( 0 1 ) − 2 1 1 2 out\_width\frac{2(01)-2}{1}12 out_width12(01)−2​12 综上所述输出尺寸为(3, 2)与代码验证的结果一致。 5.4 计算卷积操作的结果 5.5 计算池化操作的结果
http://www.pierceye.com/news/854544/

相关文章:

  • 哪里做网站域名不用备案新华舆情监测平台
  • 品牌工厂网站建设qt 网站开发
  • xxx网站建设规划家庭服务网站的营销策略
  • 哪里可以做宝盈网站江门百度seo公司
  • 电子商务的网站建设名词解释如何建立官网
  • 网站建设维护外包群排名优化软件
  • 苏州专业建设网站镇江网站建设找思创网络
  • 长春网站排名提升seo关键词推广多少钱
  • 头条网站怎么做的在网站上放广告
  • 网站建设费的会计分录wordpress c博客
  • 网站开发语言字典使用apmserv本地搭建多个网站
  • 建网站费用记账北京时间网站建设
  • 兴化网站开发佛山营销网站建设联系方式
  • 安居客官网网站天津 网站设计制作公司
  • seo建站优化价格表中山网站建设品牌
  • wp网站源码聊城市住房和城乡建设局网站首页
  • 个人博客网站总结买东西的网站
  • 兰州新区小程序建站网站的漂浮广告怎么做
  • 用vs代码做网站线上拓客渠道有哪些
  • 微信网站界面如何免费创建自己的平台
  • 电商设计一般都是做什么潍坊网站seo外包
  • 大城怎么样做网站雄安建设工程信息网站
  • 郑州网站建设方案服务安全狗iis版删了以后 网站打不开
  • 忻州网站制作jsp小型网站开发代码
  • 如何外贸网站推广wordpress默认主题哪个好
  • 设计网站推荐提升审美网站建设的公司
  • 张浦专业做网站网站建设案例百度云
  • 佛山网站如何制作网站建设公司哪家强
  • 韩城市网站建设编程培训机构加盟哪家好
  • 已备案网站更换域名广东工厂网站建设