未验证 提交 55931db4 编写于 作者: J Jiabin Yang 提交者: GitHub

fix problem that get_attr method can't using default mode when we call has_attr in dygraph (#19328)

* add default getItem

* test=develop, fix has_attr disabled error in Layer

* test=develop, fix GroupNorm and deepcf bug on attrs
上级 19dac67e
...@@ -212,6 +212,8 @@ class Layer(core.Layer): ...@@ -212,6 +212,8 @@ class Layer(core.Layer):
return self._parameters[name] return self._parameters[name]
elif name in self._sub_layers: elif name in self._sub_layers:
return self._sub_layers[name] return self._sub_layers[name]
else:
return object.__getattribute__(self, name)
def __setattr__(self, name, value): def __setattr__(self, name, value):
if isinstance(value, framework.Parameter): if isinstance(value, framework.Parameter):
......
...@@ -2403,9 +2403,9 @@ class GroupNorm(layers.Layer): ...@@ -2403,9 +2403,9 @@ class GroupNorm(layers.Layer):
def forward(self, input): def forward(self, input):
inputs = {'X': input} inputs = {'X': input}
if self._bias: if self._bias_attr:
inputs['Bias'] = self._bias inputs['Bias'] = self._bias
if self._scale: if self._param_attr:
inputs['Scale'] = self._scale inputs['Scale'] = self._scale
# create output # create output
......
...@@ -405,6 +405,13 @@ class TestImperative(unittest.TestCase): ...@@ -405,6 +405,13 @@ class TestImperative(unittest.TestCase):
self.assertTrue(np.allclose(dy_grad_h2h2, static_grad_h2h)) self.assertTrue(np.allclose(dy_grad_h2h2, static_grad_h2h))
self.assertTrue(np.allclose(dy_grad_i2h2, static_grad_i2h)) self.assertTrue(np.allclose(dy_grad_i2h2, static_grad_i2h))
def test_layer_attrs(self):
layer = fluid.dygraph.Layer("test")
layer.test_attr = 1
self.assertFalse(hasattr(layer, "whatever"))
self.assertTrue(hasattr(layer, "test_attr"))
self.assertEqual(layer.test_attr, 1)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -73,7 +73,6 @@ class MLP(fluid.Layer): ...@@ -73,7 +73,6 @@ class MLP(fluid.Layer):
self.add_sublayer( self.add_sublayer(
'match_layer_%d' % i, 'match_layer_%d' % i,
fluid.FC(self.full_name(), self._hid_sizes[i], act='relu'))) fluid.FC(self.full_name(), self._hid_sizes[i], act='relu')))
self._mat
def forward(self, users, items): def forward(self, users, items):
users = self._user_latent(users) users = self._user_latent(users)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册