XJDKC edited a comment on pull request #697: URL: https://github.com/apache/singa/pull/697#issuecomment-633031985
Now, users can define a new layer like this. (Just three functions) ``` class MyLayer(layer.Layer): def __init__(self, a, b, c): super(MyLayer, self).__init__() self.l1 = layer.Linear(a,b) self.l2 = layer.Linear(b,c) # just need to specify names of params and states self.param_names = ['W', 'b'] self.state_names = self.param_names + ['running_mean', 'running_var'] def initialize(self, x): ## init params, no need to enable the graph manually, the graph will be enabled automatically pass def forward(self, x): y = self.l1(x) y = self.l2(y) ### other statements return y ``` An example of the result of get_params.([MyModel](https://github.com/apache/singa/blob/5f485c0d21b107a119792f4a676009dcfad0d50f/proof_of_concept_to_remove.py)) ```bash {'MyModel.l1.W': [[-0.38202214 -0.12201381] [-0.304533 -0.9495602 ] [ 0.16352855 -0.01871952] [ 0.8286818 -0.35981584]], 'MyModel.l1.b': [0. 0.], 'MyModel.bn1.scale': [1. 1.], 'MyModel.bn1.bias': [0. 0.], 'MyModel.dl1.l1.W': [[ 0.11860882 -0.79534566 -0.22841209 0.17164443] [-0.6173898 0.66481847 -0.2978943 0.30236784]], 'MyModel.dl1.l1.b': [0. 0. 0. 0.], 'MyModel.dl1.l2.W': [[ 0.4442746 -1.1191332 ] [ 0.38644505 0.8065585 ] [-0.06753294 -0.19837534] [-0.20991991 0.18191515]], 'MyModel.dl1.l2.b': [0. 0.]} ``` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org