赞
踩
模型训练的步骤:
1. 构建数据集
2. 定义神经网络模型
3. 定义超参数、损失函数及优化器
4. 输入数据集进行训练与评估
首先从数据集 Dataset加载代码,构建数据集。
- import mindspore
- from mindspore import nn
- from mindspore.dataset import vision, transforms
- from mindspore.dataset import MnistDataset
-
- # Download data from open datasets
- from download import download
-
- url = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/" \
- "notebook/datasets/MNIST_Data.zip"
- path = download(url, "./", kind="zip", replace=True)
-
-
- def datapipe(path, batch_size):
- image_transforms = [
- vision.Rescale(1.0 / 255.0, 0),
- vision.Normalize(mean=(0.1307,), std=(0.3081,)),
- vision.HWC2CHW()
- ]
- label_transform = transforms.TypeCast(mindspore.int32)
-
- dataset = MnistDataset(path)
-
- # map操作是数据预处理的关键操作,可以针对数据集指定列(column)添加数据变换(Transforms),将数据变换应用于该列数据的每个元素,并返回包含变换后元素的新数据集。
- dataset = dataset.map(image_transforms, 'image')
- dataset = dataset.map(label_transform, 'label')
- dataset = dataset.batch(batch_size)
- return dataset
-
- train_dataset = datapipe('MNIST_Data/train', batch_size=64)
- test_dataset = datapipe('MNIST_Data/test', batch_size=64)
file_sizes: 100%|███████████████████████████| 10.8M/10.8M [00:00<00:00, 148MB/s] Extracting zip file... Successfully downloaded / unzipped to ./
从 06-网络构建中 加载代码,构建一个神经网络模型
- class Network(nn.Cell):
- def __init__(self):
- super().__init__()
- self.flatten = nn.Flatten()
- self.dense_relu_sequential = nn.SequentialCell(
- nn.Dense(28*28, 512),
- nn.ReLU(),
- nn.Dense(512, 512),
- nn.ReLU(),
- nn.Dense(512, 10)
- )
-
- def construct(self, x):
- x = self.flatten(x)
- logits = self.dense_relu_sequential(x)
- return logits
-
- model = Network()
超参(Hyperparameters)是可以调整的参数,可以控制模型训练优化的过程,不同的超参数值可能会影响模型训练和收敛速度。目前深度学习模型多采用批量随机梯度下降算法进行优化,随机梯度下降算法的原理如下:
公式中,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。