self.params的使用注意点

from mxnet.gluon import nn
from mxnet import nd
class MyDense(nn.HybridBlock):
    def __init__(self, units, in_units, **kwargs):
        super().__init__(**kwargs)

        self.embedding = nn.Embedding(3, 5)
        self.weight = self.params.get('weight', shape=(in_units, units))
        self.bias = self.params.get('bias', shape=(units,))
    def hybrid_forward(self, F, x, weight,bias):

        #linear = np.dot(x, self.weight.data(ctx=x.ctx)) + self.bias.data(ctx=x.ctx)
#         print(self.embedding)

        linear = F.dot(x, weight) + bias
        return F.relu(linear)

dense = MyDense(units=3,in_units=5)
dense.initialize()

print(dense(nd.random.uniform(shape=(2, 5))))
print('hybrid_forward success!')

from mxnet.gluon import nn
from mxnet import nd
class MyDense(nn.Block):
    def __init__(self, units, in_units, **kwargs):
        super().__init__(**kwargs)

        self.embedding = nn.Embedding(3, 5)
        self.weight = self.params.get('weight', shape=(in_units, units))
        self.bias = self.params.get('bias', shape=(units,))
    def forward(self, x, weight,bias):
        # 这种注释方式可以
        #linear = np.dot(x, self.weight.data(ctx=x.ctx)) + self.bias.data(ctx=x.ctx)
#         print(self.embedding)

        linear = nd.dot(x, weight) + bias
        return nd.relu(linear)

dense = MyDense(units=3,in_units=5)
dense.initialize()
try:
    print(dense(nd.random.uniform(shape=(2, 5))))
except Exception as e:
    print('some error:',e)

print('forward fail!')

 

结果:

[[0.         0.14012612 0.0058622 ]
 [0.         0.12333627 0.063691  ]]
<NDArray 2x3 @cpu(0)>
hybrid_forward success!
some error: forward() missing 2 required positional arguments: 'weight' and 'bias'
forward fail!
 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值