昇思MindSpore学习入门-参数初始化

使用内置参数初始化

MindSpore提供了多种网络参数初始化的方式,并在部分算子中封装了参数初始化的功能。本节以Conv2d为例,分别介绍如何使用Initializer子类,字符串进行参数初始化。

Initializer初始化

Initializer是MindSpore内置的参数初始化基类,所有内置参数初始化方法均继承该类。mindspore.nn中提供的神经网络层封装均提供weight_init、bias_init等入参,可以直接使用实例化的Initializer进行参数初始化。样例如下:

import numpy as np

import mindspore.nn as nn

import mindspore as ms

from mindspore.common.initializer import Normal, initializer

input_data = ms.Tensor(np.ones([1, 3, 16, 50], dtype=np.float32))

# 卷积层,输入通道为3,输出通道为64,卷积核大小为3*3,权重参数使用正态分布生成的随机数

net = nn.Conv2d(3, 64, 3, weight_init=Normal(0.2))

# 网络输出

output = net(input_data)

字符串初始化

除使用实例化的Initializer外,MindSpore也提供了参数初始化简易方法,即使用参数初始化方法名称的字符串。此方法使用Initializer的默认参数进行初始化。样例如下:

import numpy as np

import mindspore.nn as nn

import mindspore as ms

net = nn.Conv2d(3, 64, 3, weight_init='normal')

output = net(input_data)

自定义参数初始化

通常情况下,MindSpore提供的默认参数初始化可以满足常用神经网络层的初始化需求,在遇到需要自定义的参数初始化方法时,可以继承Initializer自定义参数初始化方法。下面以XavierNormal为例介绍自定义参数初始化方法:

Cell遍历初始化

除了使用weight_init, bias_init等mindspore.nn接口提供的入参外,我们也习惯于先构造完整神经网络,然后对weight、bias等参数进行统一管理。此时需要先构造网络并实例化,然后对Cell进行遍历,并对参数进行赋值。下面是一个简单的样例:

相关推荐

  1. MindSpore 应用学习-ResNet50迁移学习-CSDN

    2024-07-12 14:48:02       18 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 14:48:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 14:48:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 14:48:02       58 阅读
  4. Python语言-面向对象

    2024-07-12 14:48:02       69 阅读

热门阅读

  1. global::System.Runtime.InteropServices.DllImport

    2024-07-12 14:48:02       19 阅读
  2. Linux tputs

    2024-07-12 14:48:02       18 阅读
  3. uni-app怎样使用组件

    2024-07-12 14:48:02       22 阅读
  4. 深入解析补天平台:白帽黑客的奖金激励机制

    2024-07-12 14:48:02       22 阅读
  5. Vue数据更新页面不更新的问题

    2024-07-12 14:48:02       19 阅读
  6. Spring Boot有哪些优点和缺点

    2024-07-12 14:48:02       25 阅读