提交 3db46294 编写于 作者: Z zhangyi

Modify MindInsight'notebook for adding tensor visualization

上级 df24e04c
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 标量、直方图和图像可视化\n",
"\n",
"MindInsight可以将神经网络训练过程中的损失值标量、直方图、图像信息记录到日志文件中,通过可视化界面解析以供用户查看。\n",
"\n",
"接下来是本次流程的体验过程。\n",
"\n",
"## 整体流程\n",
"\n",
"1. 准备环节。下载MNIST数据集,配置运行信息。\n",
"\n",
"2. 数据处理。\n",
"\n",
"3. 初始化LeNet网络。\n",
"\n",
"4. 训练网络,使用`SummaryCollector`记录图像信息、损失值标量、权重梯度等参数,同时启动MindInsight服务,实时查看损失值、参数直方图和输入图像的变化。\n",
"\n",
"5. 完成训练后,查看MindInsight看板中记录到的损失值标量、直方图、图像信息及标量对比信息。\n",
"\n",
"6. 分别单独记录损失值标量、直方图、图像信息,查看展示结果,关闭MindInsight服务。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 准备环节\n",
"\n",
"### 下载数据集\n",
"\n",
"本次流程用到MNIST数据集,MNIST数据集是一个手写的数据文件,数据库里的图像都是28x28的灰度图像,每个像素都是一个八位字节,包含了60000张训练图像和10000张测试图像,常被用作神经网络训练和测试任务的数据集。\n",
"\n",
"执行下面一段代码下载MNIST数据集到当前工作目录,该段代码分为两部分:\n",
"1. 判断当前工作目录是否存在MNIST数据集目录,不存在则创建目录,存在则跳至[**数据预处理**](#数据预处理)。\n",
"2. 判断MNIST数据集目录是否存在MNIST数据集,不存在则下载MNIST数据集,存在则跳至[**数据预处理**](#数据预处理)。"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"******Downloading the MNIST dataset******\n"
]
}
],
"source": [
"import os\n",
"import urllib.request\n",
"from urllib.parse import urlparse\n",
"import gzip\n",
"\n",
"def unzip_file(gzip_path):\n",
" \"\"\"\n",
" unzip dataset file\n",
" \n",
" Args:\n",
" gzip_path: Dataset file path\n",
" \"\"\"\n",
" open_file = open(gzip_path.replace('.gz',''), 'wb')\n",
" gz_file = gzip.GzipFile(gzip_path)\n",
" open_file.write(gz_file.read())\n",
" gz_file.close()\n",
"\n",
"\n",
"def download_dataset():\n",
" \"\"\"Download the dataset from http://yann.lecun.com/exdb/mnist/.\"\"\"\n",
" print(\"******Downloading the MNIST dataset******\")\n",
" train_path = \"./MNIST_Data/train/\"\n",
" test_path = \"./MNIST_Data/test/\"\n",
" train_path_check = os.path.exists(train_path)\n",
" test_path_check = os.path.exists(test_path)\n",
" if train_path_check == False and test_path_check ==False:\n",
" os.makedirs(train_path)\n",
" os.makedirs(test_path)\n",
" train_url = {\"http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\", \"http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\"}\n",
" test_url = {\"http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\", \"http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\"}\n",
" for url in train_url:\n",
" url_parse = urlparse(url)\n",
" # split the file name from url\n",
" file_name = os.path.join(train_path,url_parse.path.split('/')[-1])\n",
" if not os.path.exists(file_name.replace('.gz','')):\n",
" file = urllib.request.urlretrieve(url, file_name)\n",
" unzip_file(file_name)\n",
" os.remove(file_name)\n",
" for url in test_url:\n",
" url_parse = urlparse(url)\n",
" # split the file name from url\n",
" file_name = os.path.join(test_path,url_parse.path.split('/')[-1])\n",
" if not os.path.exists(file_name.replace('.gz','')):\n",
" file = urllib.request.urlretrieve(url, file_name)\n",
" unzip_file(file_name)\n",
" os.remove(file_name)\n",
"\n",
"download_dataset()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"下载数据集后,MNIST数据集目录结构如下所示。\n",
"\n",
"```shell\n",
"$ tree MNIST_Data\n",
"MNIST_Data\n",
"├── test\n",
"│   ├── t10k-images-idx3-ubyte\n",
"│   └── t10k-labels-idx1-ubyte\n",
"└── train\n",
" ├── train-images-idx3-ubyte\n",
" └── train-labels-idx1-ubyte\n",
"```\n",
"\n",
"其中:\n",
"- `t10k-images-idx3-ubyte`文件为测试数据集图像文件。\n",
"- `t10k-labels-idx1-ubyte`文件为测试数据集图像标签。\n",
"- `train-images-idx3-ubyte`文件为训练数据集图像文件。\n",
"- `train-labels-idx1-ubyte`文件为测训练数据集图像标签。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 配置运行信息"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from mindspore import context\n",
"\n",
"\n",
"device_target = \"CPU\"\n",
"context.set_context(mode=context.GRAPH_MODE, device_target=device_target)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 数据处理\n",
"\n",
"好的数据集可以有效提高训练精度和效率,在加载数据集前,会进行一些处理,增加数据的可用性和随机性。下面一段代码定义函数`create_dataset`来进行数据处理操作,并创建训练数据集`ds_train`。\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import mindspore.dataset as ds\n",
"import mindspore.dataset.transforms.vision.c_transforms as CV\n",
"import mindspore.dataset.transforms.c_transforms as C\n",
"from mindspore.dataset.transforms.vision import Inter\n",
"from mindspore.common import dtype as mstype\n",
"\n",
"\n",
"def create_dataset(data_path, batch_size=32, repeat_size=1,\n",
" num_parallel_workers=1):\n",
" \"\"\"create dataset for train or test.\"\"\"\n",
" # define dataset\n",
" mnist_ds = ds.MnistDataset(data_path)\n",
"\n",
" resize_height, resize_width = 32, 32\n",
" rescale = 1.0 / 255.0\n",
" shift = 0.0\n",
" rescale_nml = 1 / 0.3081\n",
" shift_nml = -1 * 0.1307 / 0.3081\n",
"\n",
" # define map operations\n",
" resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR) # Bilinear mode\n",
" rescale_op = CV.Rescale(rescale, shift)\n",
" hwc2chw_op = CV.HWC2CHW()\n",
" type_cast_op = C.TypeCast(mstype.int32)\n",
"\n",
" # apply map operations on images\n",
" mnist_ds = mnist_ds.map(input_columns=\"label\", operations=type_cast_op, num_parallel_workers=num_parallel_workers)\n",
" mnist_ds = mnist_ds.map(input_columns=\"image\", operations=resize_op, num_parallel_workers=num_parallel_workers)\n",
" mnist_ds = mnist_ds.map(input_columns=\"image\", operations=rescale_op, num_parallel_workers=num_parallel_workers)\n",
" mnist_ds = mnist_ds.map(input_columns=\"image\", operations=hwc2chw_op, num_parallel_workers=num_parallel_workers)\n",
"\n",
" # apply DatasetOps\n",
" buffer_size = 10000\n",
" mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size) # 10000 as in LeNet train script\n",
" mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True)\n",
" mnist_ds = mnist_ds.repeat(repeat_size)\n",
"\n",
" return mnist_ds\n",
"\n",
"ds_train = create_dataset(data_path=\"./MNIST_Data/train/\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 抽取数据集图像\n",
"\n",
"执行以下一段代码,抽取上步创建好的训练数据集`ds_train`中第一个`batch`的32张图像以及对应的标签数据进行展示,输出结果中`label`表示该图像的标签。"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The 32 images with label of the first batch in ds_train are showed below:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x576 with 32 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"\n",
"print(\"The 32 images with label of the first batch in ds_train are showed below:\")\n",
"ds_iterator = ds_train.create_dict_iterator()\n",
"batch_1 = ds_iterator.get_next()\n",
"batch_image = batch_1[\"image\"]\n",
"batch_label = batch_1[\"label\"]\n",
"plt.figure(dpi=144)\n",
"for i,image in enumerate(batch_image):\n",
" plt.subplot(4, 8, i+1)\n",
" plt.subplots_adjust(wspace=0.2, hspace=0.2)\n",
" image = np.squeeze(image)\n",
" plt.imshow(image)\n",
" plt.title(f\"image {i+1}\\nlabel: {batch_label[i]}\", y=-0.65, fontdict={\"fontsize\":8})\n",
" plt.axis('off') \n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 网络初始化\n",
"\n",
"在进行训练之前,需定义神经网络模型,本流程采用最简单的[LeNet卷积神经网络](http://yann.lecun.com/exdb/lenet/)。\n",
"\n",
"LeNet网络不包括输入层的情况下,共有7层:2个卷积层、2个下采样层(池化层)、3个全连接层。每层都包含不同数量的训练参数。"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import mindspore.nn as nn\n",
"from mindspore.common.initializer import TruncatedNormal\n",
"\n",
"\n",
"def conv(in_channels, out_channels, kernel_size, stride=1, padding=0):\n",
" \"\"\"weight initial for conv layer\"\"\"\n",
" weight = weight_variable()\n",
" return nn.Conv2d(in_channels, out_channels,\n",
" kernel_size=kernel_size, stride=stride, padding=padding,\n",
" weight_init=weight, has_bias=False, pad_mode=\"valid\")\n",
"\n",
"\n",
"def fc_with_initialize(input_channels, out_channels):\n",
" \"\"\"weight initial for fc layer\"\"\"\n",
" weight = weight_variable()\n",
" bias = weight_variable()\n",
" return nn.Dense(input_channels, out_channels, weight, bias)\n",
"\n",
"\n",
"def weight_variable():\n",
" \"\"\"weight initial\"\"\"\n",
" return TruncatedNormal(0.02)\n",
"\n",
"\n",
"class LeNet5(nn.Cell):\n",
" \"\"\"\n",
" Lenet network\n",
"\n",
" Args:\n",
" num_class (int): Num classes. Default: 10.\n",
" channel (int): The number of image channel.\n",
"\n",
" Returns:\n",
" Tensor, output tensor\n",
"\n",
" \"\"\"\n",
" def __init__(self, num_class=10, channel=1):\n",
" super(LeNet5, self).__init__()\n",
" self.num_class = num_class\n",
" self.conv1 = conv(channel, 6, 5)\n",
" self.conv2 = conv(6, 16, 5)\n",
" self.fc1 = fc_with_initialize(16 * 5 * 5, 120)\n",
" self.fc2 = fc_with_initialize(120, 84)\n",
" self.fc3 = fc_with_initialize(84, self.num_class)\n",
" self.relu = nn.ReLU()\n",
" self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2)\n",
" self.flatten = nn.Flatten()\n",
"\n",
" def construct(self, x):\n",
" x = self.conv1(x)\n",
" x = self.relu(x)\n",
" x = self.max_pool2d(x)\n",
" x = self.conv2(x)\n",
" x = self.relu(x)\n",
" x = self.max_pool2d(x)\n",
" x = self.flatten(x)\n",
" x = self.fc1(x)\n",
" x = self.relu(x)\n",
" x = self.fc2(x)\n",
" x = self.relu(x)\n",
" x = self.fc3(x)\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 记录标量、直方图、图像\n",
"\n",
"本次体验中使用`SummaryCollector`来记录标量、直方图、图像信息。\n",
"\n",
"在MindSpore中通过`Callback`机制,提供支持快速简易地收集损失值、参数权重、梯度等信息的`Callback`, 叫做`SummaryCollector`。详细的用法可以参考API文档中`mindspore.train.callback.SummaryCollector`。`SummaryCollector`使用方法如下: \n",
"\n",
"1. 为了记录损失值标量、直方图、图像信息,在下面一段代码中需要在`specified`参数中指定需要记录的信息。\n",
" ```python\n",
" specified={\"collect_metric\": True, \"histogram_regular\": \"^conv1.*|^conv2.*\", \"collect_input_data\": True}\n",
" ```\n",
" 其中:\n",
" - `\"collect_metric\"`为记录损失值标量信息。\n",
" - `\"histogram_regular\"`为记录`conv1`层和`conv2`层直方图信息。\n",
" - `\"collect_input_data\"`为记录图像信息。\n",
"\n",
"\n",
"2. 实例化`SummaryCollector`,并将其应用到`model.train`或者`model.eval`中。\n",
"\n",
" 程序运行过程中将在本地`8080`端口自动启动MindInsight服务并自动遍历读取当前notebook目录下`summary_dir`子目录下所有日志文件、解析进行可视化展示。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 导入模块"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import mindspore.nn as nn\n",
"from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor\n",
"from mindspore.train import Model\n",
"from mindspore.nn.metrics import Accuracy\n",
"from mindspore.train.callback import SummaryCollector\n",
"from mindspore.train.serialization import load_checkpoint, load_param_into_net"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 执行训练"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"============== Starting Training ==============\n",
"Epoch: [ 1/ 3], step: [ 1/ 1875], loss: [2.2994/2.2994], time: [1687.2616]\n",
"Epoch: [ 1/ 3], step: [ 2/ 1875], loss: [2.3039/2.3016], time: [49.0310]\n",
"Epoch: [ 1/ 3], step: [ 3/ 1875], loss: [2.3018/2.3017], time: [46.0520]\n",
"Epoch: [ 1/ 3], step: [ 4/ 1875], loss: [2.3052/2.3026], time: [40.3159]\n",
"Epoch: [ 1/ 3], step: [ 5/ 1875], loss: [2.3015/2.3023], time: [38.1024]\n",
"Epoch: [ 1/ 3], step: [ 6/ 1875], loss: [2.3037/2.3026], time: [38.1207]\n",
"Epoch: [ 1/ 3], step: [ 7/ 1875], loss: [2.3072/2.3032], time: [33.6406]\n",
"Epoch: [ 1/ 3], step: [ 8/ 1875], loss: [2.3027/2.3032], time: [34.5430]\n",
"Epoch: [ 1/ 3], step: [ 9/ 1875], loss: [2.2994/2.3027], time: [41.9323]\n",
"Epoch: [ 1/ 3], step: [ 10/ 1875], loss: [2.3030/2.3028], time: [34.3406]\n",
" \n",
"...\n",
" \n",
"Epoch: [ 1/ 3], step: [ 1864/ 1875], loss: [2.2996/2.3020], time: [29.2704]\n",
"Epoch: [ 1/ 3], step: [ 1865/ 1875], loss: [2.2926/2.3019], time: [31.7879]\n",
"Epoch: [ 1/ 3], step: [ 1866/ 1875], loss: [2.3094/2.3020], time: [29.1045]\n",
"Epoch: [ 1/ 3], step: [ 1867/ 1875], loss: [2.3095/2.3020], time: [29.6166]\n",
"Epoch: [ 1/ 3], step: [ 1868/ 1875], loss: [2.2962/2.3020], time: [27.0908]\n",
"Epoch: [ 1/ 3], step: [ 1869/ 1875], loss: [2.3025/2.3020], time: [30.3705]\n",
"Epoch: [ 1/ 3], step: [ 1870/ 1875], loss: [2.2794/2.3019], time: [28.4398]\n",
"Epoch: [ 1/ 3], step: [ 1871/ 1875], loss: [2.2850/2.3019], time: [33.4945]\n",
"Epoch: [ 1/ 3], step: [ 1872/ 1875], loss: [2.2952/2.3019], time: [26.3717]\n",
"Epoch: [ 1/ 3], step: [ 1873/ 1875], loss: [2.2882/2.3019], time: [35.6944]\n",
"Epoch: [ 1/ 3], step: [ 1874/ 1875], loss: [2.3009/2.3019], time: [29.6407]\n",
"Epoch: [ 1/ 3], step: [ 1875/ 1875], loss: [2.3108/2.3019], time: [27.8106]\n",
"Epoch time: 72291.788, per step time: 38.556\n",
"Epoch time: 72293.802, per step time: 38.557, avg loss: 2.302\n",
"************************************************************\n",
"Epoch: [ 2/ 3], step: [ 1/ 1875], loss: [2.3051/2.3051], time: [37.1096]\n",
"Epoch: [ 2/ 3], step: [ 2/ 1875], loss: [2.2919/2.2985], time: [91.6600]\n",
"Epoch: [ 2/ 3], step: [ 3/ 1875], loss: [2.2928/2.2966], time: [92.6769]\n",
"Epoch: [ 2/ 3], step: [ 4/ 1875], loss: [2.3041/2.2985], time: [87.2607]\n",
"Epoch: [ 2/ 3], step: [ 5/ 1875], loss: [2.3199/2.3028], time: [89.0670]\n",
"Epoch: [ 2/ 3], step: [ 6/ 1875], loss: [2.3019/2.3026], time: [73.0844]\n",
"Epoch: [ 2/ 3], step: [ 7/ 1875], loss: [2.3079/2.3034], time: [34.0850]\n",
"Epoch: [ 2/ 3], step: [ 8/ 1875], loss: [2.3236/2.3059], time: [36.3448]\n",
"Epoch: [ 2/ 3], step: [ 9/ 1875], loss: [2.2902/2.3042], time: [28.5323]\n",
"Epoch: [ 2/ 3], step: [ 10/ 1875], loss: [2.2948/2.3032], time: [26.0422]\n",
" \n",
"...\n",
" \n",
"Epoch: [ 2/ 3], step: [ 1864/ 1875], loss: [0.3969/1.3612], time: [25.4016]\n",
"Epoch: [ 2/ 3], step: [ 1865/ 1875], loss: [0.3851/1.3607], time: [27.3728]\n",
"Epoch: [ 2/ 3], step: [ 1866/ 1875], loss: [0.1067/1.3600], time: [23.2320]\n",
"Epoch: [ 2/ 3], step: [ 1867/ 1875], loss: [0.1628/1.3594], time: [28.0623]\n",
"Epoch: [ 2/ 3], step: [ 1868/ 1875], loss: [0.1691/1.3588], time: [24.4234]\n",
"Epoch: [ 2/ 3], step: [ 1869/ 1875], loss: [0.0700/1.3581], time: [28.2879]\n",
"Epoch: [ 2/ 3], step: [ 1870/ 1875], loss: [0.1419/1.3574], time: [27.9124]\n",
"Epoch: [ 2/ 3], step: [ 1871/ 1875], loss: [0.2283/1.3568], time: [27.1068]\n",
"Epoch: [ 2/ 3], step: [ 1872/ 1875], loss: [0.1765/1.3562], time: [27.3213]\n",
"Epoch: [ 2/ 3], step: [ 1873/ 1875], loss: [0.2006/1.3556], time: [27.0436]\n",
"Epoch: [ 2/ 3], step: [ 1874/ 1875], loss: [0.2463/1.3550], time: [27.9057]\n",
"Epoch: [ 2/ 3], step: [ 1875/ 1875], loss: [0.0414/1.3543], time: [29.7065]\n",
"Epoch time: 66305.919, per step time: 35.363\n",
"Epoch time: 66307.889, per step time: 35.364, avg loss: 1.354\n",
"************************************************************\n",
"Epoch: [ 3/ 3], step: [ 1/ 1875], loss: [0.0499/0.0499], time: [76.6098]\n",
"Epoch: [ 3/ 3], step: [ 2/ 1875], loss: [0.2823/0.1661], time: [108.4149]\n",
"Epoch: [ 3/ 3], step: [ 3/ 1875], loss: [0.0721/0.1348], time: [92.0403]\n",
"Epoch: [ 3/ 3], step: [ 4/ 1875], loss: [0.3201/0.1811], time: [94.5814]\n",
"Epoch: [ 3/ 3], step: [ 5/ 1875], loss: [0.1420/0.1733], time: [95.1254]\n",
"Epoch: [ 3/ 3], step: [ 6/ 1875], loss: [0.0463/0.1521], time: [66.6189]\n",
"Epoch: [ 3/ 3], step: [ 7/ 1875], loss: [0.1882/0.1573], time: [28.7607]\n",
"Epoch: [ 3/ 3], step: [ 8/ 1875], loss: [0.0723/0.1467], time: [27.6423]\n",
"Epoch: [ 3/ 3], step: [ 9/ 1875], loss: [0.1394/0.1459], time: [27.8318]\n",
"Epoch: [ 3/ 3], step: [ 10/ 1875], loss: [0.1097/0.1422], time: [31.8956]\n",
" \n",
"...\n",
" \n",
"Epoch: [ 3/ 3], step: [ 1865/ 1875], loss: [0.0277/0.1156], time: [28.6355]\n",
"Epoch: [ 3/ 3], step: [ 1866/ 1875], loss: [0.1588/0.1156], time: [25.2180]\n",
"Epoch: [ 3/ 3], step: [ 1867/ 1875], loss: [0.0491/0.1156], time: [26.5954]\n",
"Epoch: [ 3/ 3], step: [ 1868/ 1875], loss: [0.0040/0.1155], time: [26.7229]\n",
"Epoch: [ 3/ 3], step: [ 1869/ 1875], loss: [0.1153/0.1155], time: [41.0545]\n",
"Epoch: [ 3/ 3], step: [ 1870/ 1875], loss: [0.0110/0.1155], time: [36.6879]\n",
"Epoch: [ 3/ 3], step: [ 1871/ 1875], loss: [0.2983/0.1156], time: [41.4791]\n",
"Epoch: [ 3/ 3], step: [ 1872/ 1875], loss: [0.1357/0.1156], time: [36.9694]\n",
"Epoch: [ 3/ 3], step: [ 1873/ 1875], loss: [0.0923/0.1156], time: [35.5153]\n",
"Epoch: [ 3/ 3], step: [ 1874/ 1875], loss: [0.2716/0.1157], time: [29.5475]\n",
"Epoch: [ 3/ 3], step: [ 1875/ 1875], loss: [0.0361/0.1156], time: [30.6802]\n",
"Epoch time: 65728.677, per step time: 35.055\n",
"Epoch time: 65730.520, per step time: 35.056, avg loss: 0.116\n",
"************************************************************\n",
"============== Starting Testing ==============\n",
"============== {'Accuracy': 0.9717548076923077} ==============\n"
]
}
],
"source": [
"summary_base_dir = \"./summary_dir\"\n",
"network = LeNet5()\n",
"net_loss = nn.SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True, reduction=\"mean\")\n",
"net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.01, momentum=0.9)\n",
"time_cb = TimeMonitor(data_size=ds_train.get_dataset_size())\n",
"config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)\n",
"ckpoint_cb = ModelCheckpoint(prefix=\"checkpoint_lenet\", config=config_ck)\n",
"model = Model(network, net_loss, net_opt, metrics={\"Accuracy\": Accuracy()})\n",
"os.system(f\"mindinsight start --summary-base-dir {summary_base_dir} --port=8080\")\n",
"\n",
"# Init a SummaryCollector callback instance, and use it in model.train or model.eval\n",
"specified = {\"collect_metric\": True, \"histogram_regular\": \"^conv1.*|^conv2.*\", \"collect_input_data\": True}\n",
"summary_collector = SummaryCollector(summary_dir=\"./summary_dir/summary_01\", collect_specified_data=specified, collect_freq=1, keep_default_action=False)\n",
"print(\"============== Starting Training ==============\")\n",
"\n",
"# Note: dataset_sink_mode should be set to False, else you should modify collect freq in SummaryCollector\n",
"model.train(epoch=3, train_dataset=ds_train, callbacks=[time_cb, ckpoint_cb, LossMonitor(), summary_collector], dataset_sink_mode=False)\n",
"print(\"============== Starting Testing ==============\")\n",
"param_dict = load_checkpoint(\"checkpoint_lenet-3_1875.ckpt\")\n",
"load_param_into_net(network, param_dict)\n",
"ds_eval = create_dataset(\"./MNIST_Data/test/\")\n",
"acc = model.eval(ds_eval, callbacks=summary_collector, dataset_sink_mode=False)\n",
"print(\"============== {} ==============\".format(acc))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MindInsight看板\n",
"\n",
"在本地浏览器中打开地址:`127.0.0.1:8080`,进入到可视化面板。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/mindinsight_panel.png)\n",
"\n",
"在上图所示面板中可以看到`summary_01`日志文件目录,点击**训练看板**进入到下图所示的训练数据展示面板,该面板展示了标量数据、直方图和图像信息,并随着训练、测试的进行实时刷新数据,实时显示训练过程参数的变化情况。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/mindinsight_panel2.png)\n",
"\n",
"## 标量可视化\n",
"\n",
"标量可视化用于展示训练过程中标量的变化趋势情况,点击打开标量信息展示面板,该面板记录了迭代计算过程中的损失值标量信息。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/scalar_panel.png)\n",
"\n",
"如下图的loss值标量趋势图。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/scalar.png)\n",
"\n",
"上图展示了神经网络在训练过程中loss值的变化过程。横坐标是训练步骤,纵坐标是loss值。\n",
"\n",
"图中右上角有几个按钮功能,从左到右功能分别是全屏展示,切换Y轴比例,开启/关闭框选,分步回退和还原图形。\n",
"\n",
"- 全屏展示即全屏展示该标量曲线,再点击一次即可恢复。\n",
"\n",
"- 切换Y轴比例是指可以将Y轴坐标进行对数转换。\n",
"\n",
"- 开启/关闭框选是指可以框选图中部分区域,并放大查看该区域,可以在已放大的图形上叠加框选。\n",
"\n",
"- 分步回退是指对同一个区域连续框选并放大查看时,可以逐步撤销操作。\n",
"\n",
"- 还原图形是指进行了多次框选后,点击此按钮可以将图还原回原始状态。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/scalar_select.png)\n",
"\n",
"上图展示的标量可视化的功能区,提供了根据选择不同标签,水平轴的不同维度和平滑度来查看标量信息的功能。\n",
"\n",
"- 标签:提供了对所有标签进行多项选择的功能,用户可以通过勾选所需的标签,查看对应的标量信息。\n",
"\n",
"- 水平轴:可以选择“步骤”、“相对时间”、“绝对时间”中的任意一项,来作为标量曲线的水平轴。\n",
"\n",
"- 平滑度:可以通过调整平滑度,对标量曲线进行平滑处理。\n",
"\n",
"- 标量合成:可以选中两条标量曲线进行合成并展示在一个图中,以方便对两条曲线进行对比或者查看合成后的图。\n",
" 标量合成的功能区与标量可视化的功能区相似。其中与标量可视化功能区不一样的地方,在于标签选择时,标量合成功能最多只能同时选择两个标签,将其曲线合成并展示。\n",
"\n",
"## 直方图可视化\n",
"\n",
"\n",
"直方图用于将用户所指定的张量以直方图的形式展示。点击打开直方图展示面板,以直方图的形式记录了在迭代过程中所有层参数分布信息。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/histogram_panel.png)\n",
"\n",
"如下图为`conv1`层参数分布信息,点击图中右上角,可以将图放大。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/histogram.png)\n",
"\n",
"下图为直方图功能区。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/histogram_func.png)\n",
"\n",
"上图展示直方图的功能区,包含以下内容:\n",
"\n",
"- 标签选择:提供了对所有标签进行多项选择的功能,用户可以通过勾选所需的标签,查看对应的直方图。\n",
"\n",
"- 纵轴:可以选择步骤、相对时间、绝对时间中的任意一项,来作为直方图纵轴显示的数据。\n",
"\n",
"- 视角:可以选择正视和俯视中的一种。正视是指从正面的角度查看直方图,此时不同步骤之间的数据会覆盖在一起。俯视是指偏移以45度角俯视直方图区域,这时可以呈现不同步骤之间数据的差异。\n",
"\n",
"## 图像可视化\n",
"\n",
"图像可视化用于展示用户所指定的图片。点击图像展示面板,展示了每个step进行处理的图像信息。\n",
"\n",
"下图为展示`summary_01`记录的图像信息。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/image_panel.png)\n",
"\n",
"通过滑动上图中的\"步骤\"滑条,查看不同步骤的图片。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/image_function.png)\n",
"\n",
"上图展示图像可视化的功能区,提供了选择查看不同标签,不同亮度和不同对比度来查看图片信息。\n",
"\n",
"- 标签:提供了对所有标签进行多项选择的功能,用户可以通过勾选所需的标签,查看对应的图片信息。\n",
"\n",
"- 亮度调整:可以调整所展示的所有图片亮度。\n",
"\n",
"- 对比度调整:可以调整所展示的所有图片对比度。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 对比看板\n",
"\n",
"对比看板可视用于多次训练之间的标量数据对比,为了展示对比看板,执行以下代码,在可视化面板中可以得到`summary_02`日志记录信息。"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"============== Starting Training ==============\n",
"Epoch: [ 1/ 3], step: [ 1/ 1875], loss: [2.3063/2.3063], time: [843.7560]\n",
"Epoch: [ 1/ 3], step: [ 2/ 1875], loss: [2.3044/2.3054], time: [36.1555]\n",
"Epoch: [ 1/ 3], step: [ 3/ 1875], loss: [2.3081/2.3063], time: [32.8023]\n",
"Epoch: [ 1/ 3], step: [ 4/ 1875], loss: [2.2985/2.3043], time: [32.3036]\n",
"Epoch: [ 1/ 3], step: [ 5/ 1875], loss: [2.3014/2.3037], time: [28.8267]\n",
"Epoch: [ 1/ 3], step: [ 6/ 1875], loss: [2.2961/2.3025], time: [34.9813]\n",
"Epoch: [ 1/ 3], step: [ 7/ 1875], loss: [2.3025/2.3025], time: [27.3423]\n",
"Epoch: [ 1/ 3], step: [ 8/ 1875], loss: [2.3042/2.3027], time: [29.7358]\n",
"Epoch: [ 1/ 3], step: [ 9/ 1875], loss: [2.2988/2.3022], time: [29.9909]\n",
"Epoch: [ 1/ 3], step: [ 10/ 1875], loss: [2.3038/2.3024], time: [33.7939]\n",
" \n",
"...\n",
" \n",
"Epoch: [ 1/ 3], step: [ 1865/ 1875], loss: [2.3122/2.3020], time: [26.6666]\n",
"Epoch: [ 1/ 3], step: [ 1866/ 1875], loss: [2.3070/2.3020], time: [28.9464]\n",
"Epoch: [ 1/ 3], step: [ 1867/ 1875], loss: [2.3008/2.3020], time: [29.8758]\n",
"Epoch: [ 1/ 3], step: [ 1868/ 1875], loss: [2.2950/2.3020], time: [28.9679]\n",
"Epoch: [ 1/ 3], step: [ 1869/ 1875], loss: [2.3019/2.3020], time: [25.5823]\n",
"Epoch: [ 1/ 3], step: [ 1870/ 1875], loss: [2.2983/2.3020], time: [29.8345]\n",
"Epoch: [ 1/ 3], step: [ 1871/ 1875], loss: [2.2923/2.3020], time: [28.8990]\n",
"Epoch: [ 1/ 3], step: [ 1872/ 1875], loss: [2.3003/2.3019], time: [27.2384]\n",
"Epoch: [ 1/ 3], step: [ 1873/ 1875], loss: [2.3201/2.3020], time: [29.0382]\n",
"Epoch: [ 1/ 3], step: [ 1874/ 1875], loss: [2.2944/2.3020], time: [28.1708]\n",
"Epoch: [ 1/ 3], step: [ 1875/ 1875], loss: [2.2822/2.3019], time: [32.4802]\n",
"Epoch time: 67513.896, per step time: 36.007\n",
"Epoch time: 67515.898, per step time: 36.008, avg loss: 2.302\n",
"************************************************************\n",
"Epoch: [ 2/ 3], step: [ 1/ 1875], loss: [2.3018/2.3018], time: [74.8553]\n",
"Epoch: [ 2/ 3], step: [ 2/ 1875], loss: [2.2892/2.2955], time: [98.9985]\n",
"Epoch: [ 2/ 3], step: [ 3/ 1875], loss: [2.3150/2.3020], time: [106.3762]\n",
"Epoch: [ 2/ 3], step: [ 4/ 1875], loss: [2.3154/2.3054], time: [92.4869]\n",
"Epoch: [ 2/ 3], step: [ 5/ 1875], loss: [2.3325/2.3108], time: [109.8773]\n",
"Epoch: [ 2/ 3], step: [ 6/ 1875], loss: [2.2824/2.3061], time: [64.4011]\n",
"Epoch: [ 2/ 3], step: [ 7/ 1875], loss: [2.3199/2.3080], time: [28.5861]\n",
"Epoch: [ 2/ 3], step: [ 8/ 1875], loss: [2.3148/2.3089], time: [27.8885]\n",
"Epoch: [ 2/ 3], step: [ 9/ 1875], loss: [2.3143/2.3095], time: [28.9767]\n",
"Epoch: [ 2/ 3], step: [ 10/ 1875], loss: [2.2965/2.3082], time: [28.9450]\n",
" \n",
"...\n",
" \n",
"Epoch: [ 2/ 3], step: [ 1865/ 1875], loss: [0.1659/1.1741], time: [45.5413]\n",
"Epoch: [ 2/ 3], step: [ 1866/ 1875], loss: [0.1054/1.1735], time: [37.2334]\n",
"Epoch: [ 2/ 3], step: [ 1867/ 1875], loss: [0.2673/1.1731], time: [41.2581]\n",
"Epoch: [ 2/ 3], step: [ 1868/ 1875], loss: [0.1802/1.1725], time: [29.3431]\n",
"Epoch: [ 2/ 3], step: [ 1869/ 1875], loss: [0.2633/1.1720], time: [27.5662]\n",
"Epoch: [ 2/ 3], step: [ 1870/ 1875], loss: [0.2392/1.1715], time: [27.0057]\n",
"Epoch: [ 2/ 3], step: [ 1871/ 1875], loss: [0.1099/1.1710], time: [28.0616]\n",
"Epoch: [ 2/ 3], step: [ 1872/ 1875], loss: [0.4501/1.1706], time: [31.3497]\n",
"Epoch: [ 2/ 3], step: [ 1873/ 1875], loss: [0.1169/1.1700], time: [24.1489]\n",
"Epoch: [ 2/ 3], step: [ 1874/ 1875], loss: [0.0778/1.1694], time: [25.6100]\n",
"Epoch: [ 2/ 3], step: [ 1875/ 1875], loss: [0.0286/1.1688], time: [29.5799]\n",
"Epoch time: 65498.555, per step time: 34.933\n",
"Epoch time: 65500.497, per step time: 34.934, avg loss: 1.169\n",
"************************************************************\n",
"Epoch: [ 3/ 3], step: [ 1/ 1875], loss: [0.3109/0.3109], time: [55.3923]\n",
"Epoch: [ 3/ 3], step: [ 2/ 1875], loss: [0.2858/0.2984], time: [89.1769]\n",
"Epoch: [ 3/ 3], step: [ 3/ 1875], loss: [0.1014/0.2327], time: [86.2334]\n",
"Epoch: [ 3/ 3], step: [ 4/ 1875], loss: [0.1062/0.2011], time: [88.1774]\n",
"Epoch: [ 3/ 3], step: [ 5/ 1875], loss: [0.0346/0.1678], time: [93.7381]\n",
"Epoch: [ 3/ 3], step: [ 6/ 1875], loss: [0.1450/0.1640], time: [78.9304]\n",
"Epoch: [ 3/ 3], step: [ 7/ 1875], loss: [0.0401/0.1463], time: [28.0168]\n",
"Epoch: [ 3/ 3], step: [ 8/ 1875], loss: [0.1812/0.1507], time: [33.9050]\n",
"Epoch: [ 3/ 3], step: [ 9/ 1875], loss: [0.0292/0.1372], time: [27.6783]\n",
"Epoch: [ 3/ 3], step: [ 10/ 1875], loss: [0.2703/0.1505], time: [26.3469]\n",
" \n",
"...\n",
" \n",
"Epoch: [ 3/ 3], step: [ 1865/ 1875], loss: [0.0244/0.1095], time: [26.9756]\n",
"Epoch: [ 3/ 3], step: [ 1866/ 1875], loss: [0.0012/0.1095], time: [30.0536]\n",
"Epoch: [ 3/ 3], step: [ 1867/ 1875], loss: [0.1289/0.1095], time: [26.0913]\n",
"Epoch: [ 3/ 3], step: [ 1868/ 1875], loss: [0.2170/0.1095], time: [30.8542]\n",
"Epoch: [ 3/ 3], step: [ 1869/ 1875], loss: [0.0565/0.1095], time: [26.2127]\n",
"Epoch: [ 3/ 3], step: [ 1870/ 1875], loss: [0.2760/0.1096], time: [29.4712]\n",
"Epoch: [ 3/ 3], step: [ 1871/ 1875], loss: [0.0180/0.1096], time: [26.1176]\n",
"Epoch: [ 3/ 3], step: [ 1872/ 1875], loss: [0.2859/0.1096], time: [27.8726]\n",
"Epoch: [ 3/ 3], step: [ 1873/ 1875], loss: [0.0170/0.1096], time: [29.1774]\n",
"Epoch: [ 3/ 3], step: [ 1874/ 1875], loss: [0.0138/0.1095], time: [27.5154]\n",
"Epoch: [ 3/ 3], step: [ 1875/ 1875], loss: [0.0618/0.1095], time: [27.2827]\n",
"Epoch time: 66392.492, per step time: 35.409\n",
"Epoch time: 66394.409, per step time: 35.410, avg loss: 0.110\n",
"************************************************************\n",
"============== Starting Testing ==============\n",
"============== {'Accuracy': 0.9736578525641025} ==============\n"
]
}
],
"source": [
"network = LeNet5()\n",
"net_loss = nn.SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True, reduction=\"mean\")\n",
"net_opt = nn.Momentum(network.trainable_params(), learning_rate=0.01, momentum=0.9)\n",
"time_cb = TimeMonitor(data_size=ds_train.get_dataset_size())\n",
"config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)\n",
"ckpoint_cb = ModelCheckpoint(prefix=\"checkpoint_lenet\", config=config_ck)\n",
"model = Model(network, net_loss, net_opt, metrics={\"Accuracy\": Accuracy()})\n",
"\n",
"# Init a SummaryCollector callback instance, and use it in model.train or model.eval\n",
"specified = {\"collect_metric\": True, \"histogram_regular\": \"^conv1.*|^conv2.*\", \"collect_input_data\": True}\n",
"summary_collector = SummaryCollector(summary_dir=\"./summary_dir/summary_02\", collect_specified_data=specified, collect_freq=1, keep_default_action=False)\n",
"print(\"============== Starting Training ==============\")\n",
"\n",
"# Note: dataset_sink_mode should be set to False, else you should modify collect freq in SummaryCollector\n",
"model.train(epoch=3, train_dataset=ds_train, callbacks=[time_cb, ckpoint_cb, LossMonitor(), summary_collector], dataset_sink_mode=False)\n",
"print(\"============== Starting Testing ==============\")\n",
"param_dict = load_checkpoint(\"checkpoint_lenet_1-3_1875.ckpt\")\n",
"load_param_into_net(network, param_dict)\n",
"ds_eval = create_dataset(\"./MNIST_Data/test/\")\n",
"acc = model.eval(ds_eval, callbacks=summary_collector, dataset_sink_mode=False)\n",
"print(\"============== {} ==============\".format(acc))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"点击MindInsight看板中的**对比看板**,打开对比看板,可以得到`summary_01`和`summary_02`标量对比信息。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/multi_scalars.png)\n",
"\n",
"上图展示了多次训练之间的标量曲线对比效果,横坐标是训练步骤,纵坐标是标量值。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/multi_scalars_select.png)\n",
"\n",
"上图展示的对比看板可视的功能区,提供了根据选择不同训练或标签,水平轴的不同维度和平滑度来进行标量对比的功能。\n",
"\n",
"- 训练:提供了对所有训练进行多项选择的功能,用户可以通过勾选或关键字筛选所需的训练。\n",
"\n",
"- 标签:提供了对所有标签进行多项选择的功能,用户可以通过勾选所需的标签,查看对应的标量信息。\n",
"\n",
"- 水平轴:可以选择“步骤”、“相对时间”、“绝对时间”中的任意一项,来作为标量曲线的水平轴。\n",
"\n",
"- 平滑度:可以通过调整平滑度,对标量曲线进行平滑处理。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 单独记录数据\n",
"\n",
"以上流程为整体展示Summary算子能记录到的所有数据,也可以单独记录关心的数据,以降低性能开销和日志文件大小。\n",
"\n",
"此处利用[**对比看板**](#对比看板)中的代码,为了排除前次训练对MindInsight展示结果的影响,在进行以下每个步骤之前先删除当前notebook根目录下的`summary_dir/summary_02`目录,配置完`specified`参数后执行[**对比看板**](#对比看板)中的代码,在MindInsight看板中查看结果。\n",
"\n",
"### 单独记录损失值标量\n",
"\n",
"配置`specified`参数为:\n",
"\n",
"```python\n",
"specified={\"collect_metric\": True}\n",
"```\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/loss_scalar_only.png)\n",
"\n",
"在MindInsight面板中,如上图所示,只展示了损失值标量信息。\n",
"\n",
"### 单独记录参数分布直方图\n",
"\n",
"配置`specified`参数为:\n",
"\n",
"```python\n",
"specified = {\"histogram_regular\": \"^conv1.*|^conv2.*|fc1.*|fc2.*|fc3.*\"}\n",
"```\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/histogram_only.png)\n",
"\n",
"在MindInsight面板中,如上图所示,只展示了参数直方图信息。\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/histogram_only_all.png)\n",
"\n",
"点击进入直方图面板,如上图所示,展示了`conv1`、`conv2`、`fc1`、`fc2`、`fc3`等各层的权重、参数信息。\n",
"\n",
"### 单独记录图像\n",
"\n",
"配置`specified`参数为:\n",
"\n",
"```python\n",
"specified = {\"collect_input_data\": True}\n",
"```\n",
"\n",
"![](https://gitee.com/mindspore/docs/raw/master/tutorials/notebook/mindinsight/images/image_only.png)\n",
"\n",
"在MindInsight面板中,如上图所示,只展示了输入图像信息。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 关闭MindInsight服务\n",
"\n",
"在终端命令行中执行以下代码关闭MindInsight服务。\n",
"\n",
"```shell\n",
"mindinsight stop --port 8080\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 注意事项和规格\n",
"\n",
"- 为了控制列出summary列表的用时,MindInsight最多支持发现999个summary列表条目。\n",
"\n",
"- 为了控制内存占用,MindInsight对标签(tag)数目和步骤(step)数目进行了限制:\n",
"\n",
" - 每个训练看板的最大标签数量为300个标签。标量标签、图片标签、计算图标签、参数分布图(直方图)标签的数量总和不得超过300个。特别地,每个训练看板最多有10个计算图标签。当实际标签数量超过这一限制时,将依照MindInsight的处理顺序,保留最近处理的300个标签。\n",
"\n",
" - 每个训练看板的每个标量标签最多有1000个步骤的数据。当实际步骤的数目超过这一限制时,将对数据进行随机采样,以满足这一限制。\n",
"\n",
" - 每个训练看板的每个图片标签最多有10个步骤的数据。当实际步骤的数目超过这一限制时,将对数据进行随机采样,以满足这一限制。\n",
" \n",
" - 每个训练看板的每个参数分布图(直方图)标签最多有50个步骤的数据。当实际步骤的数目超过这一限制时,将对数据进行随机采样,以满足这一限制。\n",
" \n",
"- 出于性能上的考虑,MindInsight对比看板使用缓存机制加载训练的标量曲线数据,并进行以下限制:\n",
" \n",
" - 对比看板只支持在缓存中的训练进行比较标量曲线对比。\n",
" \n",
" - 缓存最多保留最新(按修改时间排列)的15个训练。\n",
" \n",
" - 用户最多同时对比5个训练的标量曲线。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 总结\n",
"\n",
"本次体验流程为完整的MindSpore深度学习及MindInsight可视化展示的过程,包括了下载数据集及预处理过程,构建网络、损失函数和优化器过程,生成模型并进行训练、验证的过程,以及启动MindInsight服务进行训练过程可视化展示。读者可以基于本次体验流程构建自己的网络模型进行训练,并使用`SummaryCollector`记录关心的数据,然后在MindInsight服务看板中进行可视化展示,根据MindInsight服务中展示的结果调整相应的参数以提高训练精度。\n",
"\n",
"以上便完成了标量、直方图和图像可视化的体验,我们通过本次体验全面了解了MindSpore执行训练的过程和MindInsight在标量、直方图和图像可视化的应用,理解了如何使用`SummaryColletor`记录训练过程中的标量、直方图和图像数据。"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -13,7 +13,8 @@
<!-- /TOC -->
<a href="https://gitee.com/mindspore/docs/blob/master/tutorials/source_zh_cn/use/data_preparation/loading_the_datasets.md" target="_blank"><img src="../../_static/logo_source.png"></a>
<a href="https://gitee.com/mindspore/docs/blob/master/tutorials/source_zh_cn/use/data_preparation/loading_the_datasets.md" target="_blank"><img src="../../_static/logo_source.png"></a>&nbsp;&nbsp;
<a href="https://gitee.com/mindspore/docs/blob/master/tutorials/notebook/loading_dataset.ipynb" target="_blank"><img src="../../_static/logo_notebook.png"></a>
## 概述
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册