个人博客同步更新,界面更美观呀
Introduction
近来安装了MindSpore框架,便想测试一下它和Pytorch等其他深度学习框架有什么区别。首先便从模型的训练耗时和测试耗时来测试,MindSpore官方提供了使用LeNet解决MNIST手写数字识别的Demo,此时还需要一个用Pytorch编写的作为对比,为了使参数、模型等各方面尽可能一致,便有了照猫画虎自己编写的需求。
Coding
为了能总览模型编写训练流程,我决定从__main__函数入手,用到什么写什么。
parser
首先要用的就是一个命令行代码的解析工具,使用方法概括如下:
# 导包
import argparse
# 定义一个解析器
parser = argparse.ArgumentParser(description="")
# 给解析器添加需要从命令行读入的参数
parser.add_argument('--device_target', type=str, default="CPU", choices=['GPU', 'CPU'])
# 调用解析函数生成参数对象
args = parser.parse_args()
dataset
准备数据集,最好单独封装为一个处理函数,提供路径加载和临时下载两种方式。
super parameter
超参数的设置,其实也可以放到第一步命令行参数解析里面。
模型的定义
在__main__
函数中实例化一个模型:
model = LeNet()
在前面预先定义模型类:
class LeNet(nn.Module):
"""lenet network structure."""
def __init__(self, num_channel=1, num_class=10):
self.conv1