首页 Paddle框架 帖子详情
Conv2D是如何传递参数的?
收藏
快速回复
Paddle框架 问答模型训练深度学习 647 2
Conv2D是如何传递参数的?
收藏
快速回复
Paddle框架 问答模型训练深度学习 647 2

文档 https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Conv2D_cn.html#shuxing中代码示例:

import paddle
import paddle.nn as nn

x_var = paddle.uniform((2, 4, 8, 8), dtype='float32', min=-1., max=1.)

conv = nn.Conv2D(4, 6, (3, 3))
y_var = conv(x_var)
y_np = y_var.numpy()
print(y_np.shape)
# (2, 6, 6, 6)

 

然而,Conv2D并没有规定输入参数(x_var),请问输入张量是如何传入Conv2D的?

0
收藏
回复
全部评论(2)
时间顺序
TC.Long
#2 回复于2021-06

这个是通过 python 的 __call__ 实现的,给一个类添加了 __call__  方法后,可以使实例能够像函数一样被调用,详情请参考python官方说明: https://docs.python.org/3/reference/datamodel.html ;在 paddle 框架中,nn.Conv2D 继承了 nn.Layer, nn.Layer 的 __call__ 实现可以参考: https://github.com/PaddlePaddle/Paddle/blob/release/2.1/python/paddle/fluid/dygraph/layers.py#L875 因此可以这样使用~

1
回复
FutureSI
#3 回复于2021-06

conv = nn.Conv2D(4, 6, (3, 3)),这是定义Layer的过程

 

y_var = conv(x_var),这是使用Layer的过程

 

这是paddle框架搭建网络的风格,其它的如BatchNorm等各种归一化层,各种激活层也是这样用的,看看组网的例程就好了

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户