| @@ -124,6 +124,108 @@ Previously the kernel size and pad mode attrs of pooling ops are named "ksize" a | |||||
| ##### Python API | ##### Python API | ||||
| ###### Delete shape and dtype of class Initializer ([!7373](https://gitee.com/mindspore/mindspore/pulls/7373/files)) | |||||
| Delete shape and dtype attributes of Initializer class. | |||||
| ###### Modify the return type of initializer ([!7373](https://gitee.com/mindspore/mindspore/pulls/7373/files)) | |||||
| Previously, the return type of initializer function may be string, number, instance of class Tensor or subclass of class Initializer. | |||||
| After modification, initializer function will return instance of class MetaTensor, class Tensor or subclass of class Initializer. | |||||
| Noted that the MetaTensor is forbidden to initialize parameters, so we recommend that use str, number or subclass of Initializer for parameters initialization rather than the initializer functions. | |||||
| <table> | |||||
| <tr> | |||||
| <td style="text-align:center"> 1.0.1 </td> <td style="text-align:center"> 1.1.0 </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td> | |||||
| ```python | |||||
| >>> import mindspore.nn as nn | |||||
| >>> from mindspore.common import initializer | |||||
| >>> from mindspore import dtype as mstype | |||||
| >>> | |||||
| >>> def conv3x3(in_channels, out_channels) | |||||
| >>> weight = initializer('XavierUniform', shape=(3, 2, 32, 32), dtype=mstype.float32) | |||||
| >>> return nn.Conv2d(in_channels, out_channels, weight_init=weight, has_bias=False, pad_mode="same") | |||||
| ``` | |||||
| </td> | |||||
| <td> | |||||
| ```python | |||||
| >>> import mindspore.nn as nn | |||||
| >>> from mindspore.common.initializer import XavierUniform | |||||
| >>> | |||||
| >>> #1) using string | |||||
| >>> def conv3x3(in_channels, out_channels) | |||||
| >>> return nn.Conv2d(in_channels, out_channels, weight_init='XavierUniform', has_bias=False, pad_mode="same") | |||||
| >>> | |||||
| >>> #2) using subclass of class Initializer | |||||
| >>> def conv3x3(in_channels, out_channels) | |||||
| >>> return nn.Conv2d(in_channels, out_channels, weight_init=XavierUniform(), has_bias=False, pad_mode="same") | |||||
| ``` | |||||
| </td> | |||||
| </tr> | |||||
| </table> | |||||
| Advantages: | |||||
| After modification, we can use the same instance of Initializer to initialize parameters of different shapes, which was not allowed before. | |||||
| <table> | |||||
| <tr> | |||||
| <td style="text-align:center"> 1.0.1 </td> <td style="text-align:center"> 1.1.0 </td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td> | |||||
| ```python | |||||
| >>> import mindspore.nn as nn | |||||
| >>> from mindspore.common import initializer | |||||
| >>> from mindspore.common.initializer import XavierUniform | |||||
| >>> | |||||
| >>> weight_init_1 = XavierUniform(gain=1.1) | |||||
| >>> conv1 = nn.Conv2d(3, 6, weight_init=weight_init_1) | |||||
| >>> weight_init_2 = XavierUniform(gain=1.1) | |||||
| >>> conv2 = nn.Conv2d(6, 10, weight_init=weight_init_2) | |||||
| ``` | |||||
| </td> | |||||
| <td> | |||||
| ```python | |||||
| >>> import mindspore.nn as nn | |||||
| >>> from mindspore.common import initializer | |||||
| >>> from mindspore.common.initializer import XavierUniform | |||||
| >>> | |||||
| >>> weight_init = XavierUniform(gain=1.1) | |||||
| >>> conv1 = nn.Conv2d(3, 6, weight_init=weight_init) | |||||
| >>> conv2 = nn.Conv2d(6, 10, weight_init=weight_init) | |||||
| ``` | |||||
| </td> | |||||
| </tr> | |||||
| </table> | |||||
| ###### Modify get_seed function ([!7429](https://gitee.com/mindspore/mindspore/pulls/7429/files)) | |||||
| Modify get_seed function implementation | |||||
| Previously, if seed is not set, the value of seed is default, parameters initialized by the normal function are the same every time. | |||||
| After modification, if seed is not set, the value of seed is generated randomly, the initialized parameters change according to the random seed. | |||||
| If you want to fix the initial value of parameters, we suggest to set seed. | |||||
| ```python | |||||
| >>> from mindspore.common import set_seed | |||||
| >>> set_seed(1) | |||||
| ``` | |||||
| ###### Parts of `Optimizer` add target interface ([!6760](https://gitee.com/mindspore/mindspore/pulls/6760/files)) | ###### Parts of `Optimizer` add target interface ([!6760](https://gitee.com/mindspore/mindspore/pulls/6760/files)) | ||||
| The usage of the sparse optimizer is changed. | The usage of the sparse optimizer is changed. | ||||