下面代码是全连接层的实现。可以看到 hybrid_forward 的输入参数为:
(self, F, x, weight, bias=None)。F是NDArray或者Symbol.
X是输入的值。 我们返现 weight, bias=None 并没有传入,而是通过
在__init__里用self.weight = self.params.get(…)以后,这个weight就会自动被传到hybrid_forward里。
class Dense(HybridBlock):
def __init__(self, units, activation=None, use_bias=True, flatten=True,
weight_initializer=None, bias_initializer='zeros',
in_units=0, **kwargs):
super(Dense, self).__init__(**kwargs)
self._flatten = flatten
with self.name_scope():
self._units = units
self._in_units = in_units
self.weight = self.params.get('weight', shape=(units, in_units),
init=weight_initializer,
allow_deferred_init=True)
if use_bias:
sel