【昇思初学入门】第五天打卡

网络构建

学习心得

  1. 定义神经网络时,可以继承nn.Cell类,在__init__方法中进行子Cell的实例化和状态管理,在construct方法中实现Tensor操作
  2. MindSpore默认情况下是以动态图模式运行,但也支持通过设置set_context手工切换为静态图模式,也jit装饰器开启

案例

import mindspore as ms
from mindspore import nn, ops
ms.set_context(mode=ms.PYNATIVE_MODE)  # 动态图模式
ms.set_context(mode=ms.GRAPH_MODE) # 静态图模式

class Network(nn.Cell):
    def __init__(self):
        super().__init__()
        # 使用 Flatten 层将输入展平 
        self.flatten = nn.Flatten()
        # nn.SequentialCell是一个有序的Cell容器。输入Tensor将按照定义的顺序通过所有Cell。我们可以使用SequentialCell来快速组合构造一个神经网络模型。
        # 下面的例子包含两个隐藏层和一个输出层
        self.dense_relu_sequential = nn.SequentialCell(
         	# 全连接层 输入层到第一个隐藏层 
            nn.Dense(28*28, 512, weight_init="normal", bias_init="zeros"),
            # 非线性的激活函数
            nn.ReLU(),
            # 全连接层 第一个隐藏层到第二个隐藏层
            nn.Dense(512, 512, weight_init="normal", bias_init="zeros"),
            nn.ReLU(),
            # 第二个隐藏层到输出层
            nn.Dense(512, 10, weight_init="normal", bias_init="zeros")
        )

    def construct(self, x):
	    # 将输入 x 展平  
        x = self.flatten(x)
        # 前向传播
        logits = self.dense_relu_sequential(x)
        return logits

X = ops.ones((1, 28, 28), mindspore.float32)
logits = model(X)
pred_probab = nn.Softmax(axis=1)(logits)
print(pred_probab)
y_pred = pred_probab.argmax(1)
print(f"Predicted class: {y_pred}")

结果

[[0.10113075 0.10011511 0.09956549 0.09937003 0.10002089 0.10005981
  0.10049177 0.10075468 0.10002148 0.09847002]]
Predicted class: [0]
  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值