使用MindSpore创建网络模型的基本方法

2025-10-03 14:54:53

1、       首先需要清楚:使用MindSpore定义神经网络需要继承mindspore.nn.Cell。Cell是所有神经网络(如Conv2d-relu-softmax等)的基类。

import mindspore.nn as nn

from mindspore.common.initializer import Normal

2、       导入我们的基础模块后,我们开始定义模型的类,神经网络的各层需要预先在__init__方法中定义,然后通过定义construct方法来完成神经网络的前向构造。按照LeNet的网络结构,定义网络各层如下:

class LeNet5(nn.Cell):

    """

    Lenet网络结构

    """

    def __init__(self, num_class=10, num_channel=1):

        super(LeNet5, self).__init__()

        # 定义所需要的运算

        self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid')

        self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid')

        self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02))

        self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02))

        self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02))

        self.relu = nn.ReLU()

        self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2)

        self.flatten = nn.Flatten()

3、       这里开始,我们将每层串联起来。

    def construct(self, x):

        # 使用定义好的运算构建前向网络

        x = self.conv1(x)

        x = self.relu(x)

        x = self.max_pool2d(x)

        x = self.conv2(x)

        x = self.relu(x)

        x = self.max_pool2d(x)

        x = self.flatten(x)

        x = self.fc1(x)

        x = self.relu(x)

        x = self.fc2(x)

        x = self.relu(x)

        x = self.fc3(x)

        return x

4、       最终,我们将创建出我们需要的基础网络模型。

# 实例化网络

net = LeNet5()

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢