| @@ -7,26 +7,24 @@ | |||
| 数据集可从本项目的数据集中引用,[数据集引用](https://git.openi.org.cn/OpenIOSSG/MNIST_Example/datasets?type=1) | |||
| - MNISTData数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 | |||
| - MNIST_Data.zip数据集压缩包的目录结构如下: | |||
| > MNIST_Data.zip | |||
| > ├── test | |||
| > │ ├── t10k-images-idx3-ubyte | |||
| > │ └── t10k-labels-idx1-ubyte | |||
| > └── train | |||
| > ├── train-images-idx3-ubyte | |||
| > └── train-labels-idx1-ubyte | |||
| - MnistDataset_torch数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 | |||
| - MnistDataset_torch.zip数据集压缩包的目录结构如下: | |||
| > MnistDataset_torch.zip | |||
| > | |||
| > ├── test | |||
| > | |||
| > └── train | |||
| > | |||
| ##### 2,预训练模型说明: | |||
| checkpoint_lenet-1_1875模型可从本项目的模型目录中引用,[预训练模型引用]() | |||
| Torch_MNIST_Example_Model模型可从本项目的模型目录中引用,[预训练模型引用]() | |||
| * checkpoint_lenet-1_1875模型的目录结构如下: | |||
| * Torch_MNIST_Example_Model模型的目录结构如下: | |||
| > checkpoint_lenet-1_1875 | |||
| > ├── checkpoint_lenet-1_1875.ckpt | |||
| > Torch_MNIST_Example_Model | |||
| > ├── mnist_epoch1_0.76.pkl | |||
| > | |||
| ## 二. 如何在云脑上获取代码路径,数据集路径,预训练模型路径,输出路径 | |||
| @@ -51,7 +49,7 @@ code_path = c2net_context.code_path + "/" + "Openl_Cloudbrain_Example" | |||
| ``` | |||
| dataset_path = c2net_context.dataset_path +"/" +"数据集名称" | |||
| 在本示例中代码路径为: | |||
| dataset_path = c2net_context.dataset_path + "/" + "MNIST_Data" | |||
| dataset_path = c2net_context.dataset_path + "/" + "MnistDataset_torch" | |||
| ``` | |||
| ##### 4,获取预训练模型路径 | |||
| @@ -59,7 +57,7 @@ dataset_path = c2net_context.dataset_path + "/" + "MNIST_Data" | |||
| ``` | |||
| pretrain_model_path = c2net_context.pretrain_model_path +"/" +"模型名称" | |||
| 在本示例中预训练模型路径为: | |||
| pretrain_model_path = c2net_context.pretrain_model_path + "/" + "checkpoint_lenet-1_1875" | |||
| pretrain_model_path = c2net_context.pretrain_model_path + "/" + "Torch_MNIST_Example_Model" | |||
| ``` | |||
| ##### 5,获取输出路径 | |||
| @@ -96,9 +94,10 @@ upload_output() | |||
| | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | |||
| | 镜像 | 镜像选择含有python和torch的镜像 | | |||
| | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择gpu_mnist_example/train.py | | |||
| | 数据集 | 数据集选择MNIST_Data.zip | | |||
| | 数据集 | 数据集选择MnistDataset_torch.zip | | |||
| | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | |||
| | 资源规格 | 规格选择[GPU] | | |||
| | 模型 | 模型选择Torch_MNIST_Example_Model | | |||
| 启动调试任务后,先执行prepare()进行数据准备; | |||
| @@ -113,10 +112,10 @@ upload_output() | |||
| | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | |||
| | 镜像 | 镜像选择含有python和torch的镜像 | | |||
| | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择gpu_mnist_example/train.py | | |||
| | 数据集 | 数据集选择MNIST_Data.zip | | |||
| | 数据集 | 数据集选择MnistDataset_torch.zip | | |||
| | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | |||
| | 资源规格 | 规格选择[GPU] | | |||
| | 模型 | 模型选择checkpoint_lenet-1_1875 | | |||
| | 模型 | 模型选择Torch_MNIST_Example_Model | | |||
| 启动训练任务后,训练结束会在任务的结果下载页提供输出结果下载 | |||
| @@ -66,18 +66,17 @@ if __name__ == '__main__': | |||
| #初始化导入数据集和预训练模型到容器内 | |||
| c2net_context = prepare() | |||
| #获取数据集路径 | |||
| checkpoint_lenet_1_1875_path = c2net_context.dataset_path+"/"+"checkpoint_lenet-1_1875" | |||
| MnistDataset_torch = c2net_context.dataset_path+"/"+"MnistDataset_torch" | |||
| MnistDataset_torch_path = c2net_context.dataset_path+"/"+"MnistDataset_torch" | |||
| #获取预训练模型路径 | |||
| mnist_example_test2_model_djts_path = c2net_context.pretrain_model_path+"/"+"MNIST_Example_test2_model_djts" | |||
| Torch_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Torch_MNIST_Example_Model" | |||
| #log output | |||
| print('cuda is available:{}'.format(torch.cuda.is_available())) | |||
| device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") | |||
| batch_size = args.batch_size | |||
| epochs = args.epoch_size | |||
| test_dataset = mnist.MNIST(root=MnistDataset_torch + "/test", train=False, transform=ToTensor(),download=False) | |||
| test_dataset = mnist.MNIST(root=MnistDataset_torch_path + "/test", train=False, transform=ToTensor(),download=False) | |||
| test_loader = DataLoader(test_dataset, batch_size=batch_size) | |||
| model = Model().to(device) | |||
| checkpoint = torch.load(mnist_example_test2_model_djts_path + "/mnist_epoch1.pkl") | |||
| checkpoint = torch.load(Torch_MNIST_Example_Model_path + "/mnist_epoch1.pkl") | |||
| model.load_state_dict(checkpoint['model']) | |||
| test(model,test_loader,len(test_dataset)) | |||
| @@ -80,24 +80,23 @@ if __name__ == '__main__': | |||
| #初始化导入数据集和预训练模型到容器内 | |||
| c2net_context = prepare() | |||
| #获取数据集路径 | |||
| checkpoint_lenet_1_1875_path = c2net_context.dataset_path+"/"+"checkpoint_lenet-1_1875" | |||
| MnistDataset_torch = c2net_context.dataset_path+"/"+"MnistDataset_torch" | |||
| MnistDataset_torch_path = c2net_context.dataset_path+"/"+"MnistDataset_torch" | |||
| #获取预训练模型路径 | |||
| mnist_example_test2_model_djts_path = c2net_context.pretrain_model_path+"/"+"MNIST_Example_test2_model_djts" | |||
| Torch_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Torch_MNIST_Example_Model" | |||
| #log output | |||
| print('cuda is available:{}'.format(torch.cuda.is_available())) | |||
| device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") | |||
| batch_size = args.batch_size | |||
| epochs = args.epoch_size | |||
| train_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch, "train"), train=True, transform=ToTensor(),download=False) | |||
| test_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch, "test"), train=False, transform=ToTensor(),download=False) | |||
| train_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch_path, "train"), train=True, transform=ToTensor(),download=False) | |||
| test_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch_path, "test"), train=False, transform=ToTensor(),download=False) | |||
| train_loader = DataLoader(train_dataset, batch_size=batch_size) | |||
| test_loader = DataLoader(test_dataset, batch_size=batch_size) | |||
| #如果有保存的模型,则加载模型,并在其基础上继续训练 | |||
| if os.path.exists(os.path.join(mnist_example_test2_model_djts_path, "mnist_epoch1_0.76.pkl")): | |||
| checkpoint = torch.load(os.path.join(mnist_example_test2_model_djts_path, "mnist_epoch1_0.76.pkl")) | |||
| if os.path.exists(os.path.join(Torch_MNIST_Example_Model_path, "mnist_epoch1_0.76.pkl")): | |||
| checkpoint = torch.load(os.path.join(Torch_MNIST_Example_Model_path, "mnist_epoch1_0.76.pkl")) | |||
| model.load_state_dict(checkpoint['model']) | |||
| optimizer.load_state_dict(checkpoint['optimizer']) | |||
| start_epoch = checkpoint['epoch'] | |||
| @@ -6,10 +6,10 @@ | |||
| 数据集可从本项目的数据集中引用,[数据集引用](https://git.openi.org.cn/OpenIOSSG/MNIST_Example/datasets?type=1) | |||
| - MNISTData数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 | |||
| - MNISTData.zip数据集压缩包的目录结构如下: | |||
| - MnistDataset_mindspore数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 | |||
| - MnistDataset_mindspore.zip数据集压缩包的目录结构如下: | |||
| > MNISTData.zip | |||
| > MnistDataset_mindspore.zip | |||
| > ├── test | |||
| > │ ├── t10k-images-idx3-ubyte | |||
| > │ └── t10k-labels-idx1-ubyte | |||
| @@ -50,7 +50,7 @@ code_path = c2net_context.code_path + "/" + "Openl_Cloudbrain_Example" | |||
| ``` | |||
| dataset_path = c2net_context.dataset_path +"/" +"数据集名称" | |||
| 在本示例中代码路径为: | |||
| dataset_path = c2net_context.dataset_path + "/" + "MNISTData" | |||
| dataset_path = c2net_context.dataset_path + "/" + "MnistDataset_mindspore" | |||
| ``` | |||
| ##### 4,获取预训练模型路径 | |||
| @@ -97,7 +97,7 @@ upload_output() | |||
| | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | |||
| | 镜像 | 镜像选择mindspore_1.10.1 | | |||
| | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择npu_mnist_example/train.py | | |||
| | 数据集 | 数据集选择MNISTData.zip | | |||
| | 数据集 | 数据集选择MnistDataset_mindspore.zip | | |||
| | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | |||
| | 资源规格 | 规格选择[Ascend: 1 * Ascend 910 CPU:24 核 256GiB],表示单机单卡 | | |||
| | 模型 | 模型可选择Mindspore_MNIST_Example_Model | | |||
| @@ -115,7 +115,7 @@ upload_output() | |||
| | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | |||
| | 镜像 | 镜像选择mindspore_1.10.1 | | |||
| | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择npu_mnist_example/train.py | | |||
| | 数据集 | 数据集选择MNISTData.zip | | |||
| | 数据集 | 数据集选择MnistDataset_mindspore.zip | | |||
| | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | |||
| | 资源规格 | 规格选择[Ascend: 1 * Ascend 910 CPU:24 核 256GiB],表示单机单卡 | | |||
| | 模型 | 模型选择Mindspore_MNIST_Example_Model | | |||
| @@ -1,9 +1,9 @@ | |||
| """ | |||
| 示例选用的数据集是MNISTData.zip | |||
| 示例选用的数据集是MnistDataset_mindspore.zip | |||
| 数据集结构是: | |||
| MNISTData.zip | |||
| MnistDataset_mindspore.zip | |||
| ├── test | |||
| │ ├── t10k-images-idx3-ubyte | |||
| │ └── t10k-labels-idx1-ubyte | |||
| @@ -52,7 +52,7 @@ if __name__ == "__main__": | |||
| #初始化导入数据集和预训练模型到容器内 | |||
| c2net_context = prepare() | |||
| #获取数据集路径 | |||
| mnistdata_path = c2net_context.dataset_path+"/"+"MNISTData" | |||
| MnistDataset_mindspore_path = c2net_context.dataset_path+"/"+"MnistDataset_mindspore" | |||
| #获取预训练模型路径 | |||
| Mindspore_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Mindspore_MNIST_Example_Model" | |||
| #获取输出路径 | |||
| @@ -69,7 +69,7 @@ if __name__ == "__main__": | |||
| print("============== Starting Testing ==============") | |||
| load_param_into_net(network, load_checkpoint(os.path.join(Mindspore_MNIST_Example_Model_path, "checkpoint_lenet-1_1875.ckpt"))) | |||
| ds_test = create_dataset(os.path.join(mnistdata_path, "test"), batch_size=1).create_dict_iterator() | |||
| ds_test = create_dataset(os.path.join(MnistDataset_mindspore_path, "test"), batch_size=1).create_dict_iterator() | |||
| data = next(ds_test) | |||
| images = data["image"].asnumpy() | |||
| labels = data["label"].asnumpy() | |||
| @@ -1,9 +1,9 @@ | |||
| """ | |||
| 示例选用的数据集是MNISTData.zip | |||
| 示例选用的数据集是MnistDataset_mindspore.zip | |||
| 数据集结构是: | |||
| MNISTData.zip | |||
| MnistDataset_mindspore.zip | |||
| ├── test | |||
| │ ├── t10k-images-idx3-ubyte | |||
| │ └── t10k-labels-idx1-ubyte | |||
| @@ -52,7 +52,7 @@ if __name__ == "__main__": | |||
| #初始化导入数据集和预训练模型到容器内 | |||
| c2net_context = prepare() | |||
| #获取数据集路径 | |||
| mnistdata_path = c2net_context.dataset_path+"/"+"MNISTData" | |||
| MnistDataset_mindspore_path = c2net_context.dataset_path+"/"+"MnistDataset_mindspore" | |||
| #获取预训练模型路径 | |||
| Mindspore_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Mindspore_MNIST_Example_Model" | |||
| #获取输出路径 | |||
| @@ -60,7 +60,7 @@ if __name__ == "__main__": | |||
| context.set_context(mode=context.GRAPH_MODE,device_target=args.device_target) | |||
| #使用数据集的方式 | |||
| ds_train = create_dataset(os.path.join(mnistdata_path, "train"), cfg.batch_size) | |||
| ds_train = create_dataset(os.path.join(MnistDataset_mindspore_path, "train"), cfg.batch_size) | |||
| network = LeNet5(cfg.num_classes) | |||
| net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean") | |||
| net_opt = nn.Momentum(network.trainable_params(), cfg.lr, cfg.momentum) | |||
| @@ -1,9 +1,9 @@ | |||
| """ | |||
| 示例选用的数据集是MNISTData.zip | |||
| 示例选用的数据集是MnistDataset_mindspore.zip | |||
| 数据集结构是: | |||
| MNISTData.zip | |||
| MnistDataset_mindspore.zip | |||
| ├── test | |||
| │ ├── t10k-images-idx3-ubyte | |||
| │ └── t10k-labels-idx1-ubyte | |||
| @@ -64,7 +64,7 @@ if __name__ == "__main__": | |||
| #初始化导入数据集和预训练模型到容器内 | |||
| c2net_context = prepare() | |||
| #获取数据集路径 | |||
| mnistdata_path = c2net_context.dataset_path+"/"+"MNISTData" | |||
| MnistDataset_mindspore_path = c2net_context.dataset_path+"/"+"MnistDataset_mindspore" | |||
| #获取预训练模型路径 | |||
| Mindspore_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Mindspore_MNIST_Example_Model" | |||
| output_path = c2net_context.output_path | |||
| @@ -79,7 +79,7 @@ if __name__ == "__main__": | |||
| print("download_input failed") | |||
| while not os.path.exists("/cache/download_input.txt"): | |||
| time.sleep(1) | |||
| ds_train = create_dataset_parallel(os.path.join(mnistdata_path, "train"), cfg.batch_size) | |||
| ds_train = create_dataset_parallel(os.path.join(MnistDataset_mindspore_path, "train"), cfg.batch_size) | |||
| network = LeNet5(cfg.num_classes) | |||
| net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean") | |||