-
添加图片的时候路径没问题、传入图片的位置也没问题,但图片就是显示不出来,是哪个步骤出错了吗?或者有没有其他上传图片的方法?路径设置:传入位置:显示结果:
-
modelarts控制台的notebook有没有关于mindspore模型的实例呢,具体在哪可以找到?
-
1、成功安装atlas300-3010相关驱动等成功安装Ascend-cann-toolkit_5.1.RC2_linux-x86_64.runmindspore_ascend-1.8.0-cp37-cp37m-linux_x86_64.whl2、执行python3 -c "import mindspore;mindspore.set_context(device_target='Ascend');mindspore.run_check()"MindSpore version: 1.8.0 MindSpore running check failed. Internal Error: Get Device HBM memory size failed, ret = 0, total HBM size :0 ---------------------------------------------------- - C++ Call Stack: (For framework developers) ---------------------------------------------------- mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_memory_adapter.cc:53 Initialize 3、复用分类代码,写了一个python文件叫ResNet-1.8.pyhttps://www.mindspore.cn/tutorials/zh-CN/r1.8/beginner/infer.html其中设置了调用设备的方式;parser = argparse.ArgumentParser(description='MindSpore Example') parser.add_argument('--device_target', type=str, default="Ascend", choices=['Ascend', 'GPU', 'CPU']) args = parser.parse_args() context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target)执行python3 ResNet-1.8.py,得到Delete parameter from checkpoint: head.classifier.weight Delete parameter from checkpoint: head.classifier.bias Delete parameter from checkpoint: moments.head.classifier.weight Delete parameter from checkpoint: moments.head.classifier.bias [WARNING] ME(46532:140370453165888,MainProcess):2024-01-26-13:57:07.963.642 [mindspore/train/serialization.py:712] For 'load_param_into_net', 2 parameters in the 'net' are not loaded, because they are not in the 'parameter_dict', please check whether the network structure is consistent when training and loading checkpoint. [WARNING] ME(46532:140370453165888,MainProcess):2024-01-26-13:57:07.963.854 [mindspore/train/serialization.py:714] head.classifier.weight is not loaded. [WARNING] ME(46532:140370453165888,MainProcess):2024-01-26-13:57:07.963.911 [mindspore/train/serialization.py:714] head.classifier.bias is not loaded. Traceback (most recent call last): File "ResNet-1.8.py", line 122, in <module> callbacks=None) File "/usr/local/lib/python3.7/site-packages/mindspore/train/model.py", line 1069, in train initial_epoch=initial_epoch) File "/usr/local/lib/python3.7/site-packages/mindspore/train/model.py", line 96, in wrapper func(self, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/mindspore/train/model.py", line 622, in _train cb_params, sink_size, initial_epoch, valid_infos) File "/usr/local/lib/python3.7/site-packages/mindspore/train/model.py", line 681, in _train_dataset_sink_process dataset_helper=dataset_helper) File "/usr/local/lib/python3.7/site-packages/mindspore/train/model.py", line 437, in _exec_preprocess dataset_helper = DatasetHelper(dataset, dataset_sink_mode, sink_size, epoch_num) File "/usr/local/lib/python3.7/site-packages/mindspore/train/dataset_helper.py", line 338, in __init__ self.iter = iterclass(dataset, sink_size, epoch_num) File "/usr/local/lib/python3.7/site-packages/mindspore/train/dataset_helper.py", line 557, in __init__ super().__init__(dataset, sink_size, epoch_num) File "/usr/local/lib/python3.7/site-packages/mindspore/train/dataset_helper.py", line 455, in __init__ is_dynamic_shape=self.dynamic_shape) File "/usr/local/lib/python3.7/site-packages/mindspore/train/_utils.py", line 77, in _exec_datagraph need_run=need_run) File "/usr/local/lib/python3.7/site-packages/mindspore/common/api.py", line 1009, in init_dataset need_run=need_run): RuntimeError: Internal Error: Get Device HBM memory size failed, ret = 0, total HBM size :0 ---------------------------------------------------- - C++ Call Stack: (For framework developers) ---------------------------------------------------- mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_memory_adapter.cc:53 Initialize 4、执行npu-smi info,得到信息如下:+--------------------------------------------------------------------------------------------------------+ | npu-smi 22.0.4 Version: 22.0.4 | +-------------------------------+-----------------+------------------------------------------------------+ | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) | | Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) | +===============================+=================+======================================================+ | 1 310 | OK | 12.8 59 0 / 969 | | 0 0 | 0000:3D:00.0 | 0 666 / 7759 | +-------------------------------+-----------------+------------------------------------------------------+ | 1 310 | OK | 12.8 60 0 / 969 | | 1 1 | 0000:3E:00.0 | 0 626 / 7759 | +-------------------------------+-----------------+------------------------------------------------------+ | 1 310 | OK | 12.8 59 0 / 969 | | 2 2 | 0000:3F:00.0 | 0 628 / 7759 | +-------------------------------+-----------------+------------------------------------------------------+ | 1 310 | OK | 12.8 59 0 / 969 | | 3 3 | 0000:40:00.0 | 0 627 / 7759 | +===============================+=================+======================================================+
-
目的与要求实验目的:了解逻辑回归的基本概念了解如何使用 MindSpore 进行逻辑回归实验实验要求:使用 MindSpore 实现了逻辑回归,生成可以区分2类鸢尾花的逻辑回归模型。内容与设计思想1、 实验内容:逻辑回归是机器学习中的一种经典算法,它是广义线性回归的一种形式,与线性回归有明显的不同。逻辑回归的主要特点包括:自变量分布不受限制:逻辑回归不要求自变量(特征)的分布遵循特定的概率分布,因此可以应用于各种类型的特征数据。因变量是离散型变量:逻辑回归用于处理离散型的因变量,通常是二分类问题(例如,是/否、1/0),但也可以扩展到多分类问题。分析概率关系:逻辑回归分析的是因变量取某个值的概率与自变量之间的关系。它估计了某个事件发生的概率,而不是直接估计事件的值。具体到这个实验中,使用MindSpore进行逻辑回归,目标是在一个二分类数据集上分析自变量(特征)与因变量(概率)之间的关系。2、 设计思想:数据准备à数据读取预处理à模型建立与训练à模型评估使用环境MindSpore 1.3华为云ModelArts:ModelArts 是华为云提供的面向开发者的一站式 AI 开发平台,集成了昇腾 AI 处理器资源池,用户可以在该平台下体验 MindSpore。主要实验内容和结果展示ModelArts开发环境搭建在华为云主页搜索 Modelarts,点击“AI 开发平台 ModelArts”中的“进入控制台”选择“北京四”地区,在左侧下拉框中点击“开发环境”中的“Notebook”, 点击创建按钮来创建一个新的 Notebook,选择如下配置: 名称:MachineLearning工作环境:Ascend+ARM 算法开发和训练基础镜像。 存储配置:默认存储。 点击“下一步”,确认规格如下后选择提交:当 Notebook 状态变为“运行中”时,点击右侧“打开”按钮打开 Notebook。打开后选择右侧“MindSpore-python3.7-aarch64”按钮,进入 Notebook 环境:数据准备Iris 数据集是模式识别最著名的数据集之一。数据集包含 3 类,每类 50 个实例,其中每个类都涉及一种鸢尾植物。 第一类与后两类可线性分离,后两类之间不能线性分离,所以本实验取前两类数据,做一个 2 分类数据集。2.1下载数据我们从Iris数据集官网下载[iris.data 文件](cid:link_0)2.2上传数据到实验环境在新建的 notebook 实验环境中,通过如图所示的“上传”按钮,然后选择自己本地已下载好的 数据文件“iris.data”,将数据文件上传到实验环境中。3、 导入 MindSpore 模块和辅助模块读取 Iris 数据集,并查看部分数据输出:4、抽取样本 取前两类样本(共 100 条),将数据集的 4 个属性作为自变量 X。将数据集的 2 个类别映射 为{0, 1},作为因变量 Y。 4、样本可视化 取样本的前两个属性进行 2 维可视化,可以看到在前两个属性上两类样本是线性可分的。输出:5、分割数据集 将数据集按 8:2 划分为训练集和验证集:6、数据类型转换 使用 MindSpore 的 GeneratorDataset 接口将 numpy.ndarray 类型的数据转换为 Dataset:7、模型创建与训练可视化逻辑回归函数 逻辑回归常用的联系函数是 Sigmoid(S 形函数),Sigmoid 函数如下图所示,可以将连续值 映射到{0, 1},同时也是单调可微的。输出:7、建模使用 MindSpore 提供的 nn.Dense(4, 1)算子(https://www.mindspore.cn/api/zh-CN/0.2.0-alpha/api/python/mindspore/mindspore.nn.html#mindspore.nn.Dense)作为线性部分,其中(4, 1)表示每个样本的输入是含 4 个元素的向量,输出是含 1 个元素的向量,即 W 是 1x4的矩阵。算子会随机初始化权重 W 和偏置 b。使用 SigmoidCrossEntropyWithLogits 算子(https://www.mindspore.cn/api/zh-CN/0.3.0-alpha/api/python/mindspore/mindspore.ops.operations.html?#mindspore.ops.operations.S igmoidCrossEntropyWithLogits)作为非线性部分: 对于每个样本 N_i,模型的计算方式如下: 8、模型训练 使用 2 分类的 Iris 数据集对模型进行几代(Epoch)训练:输出:9、模型评估然后计算模型在测试集上精度,测试集上的准确率达到了 1.0 左右,即逻辑回归模型学会了区分 2 类鸢尾花。输出:五、实验总结 本实验使用 MindSpore 实现了逻辑回归,用来解决 2 分类问题。在 Iris 数据集上进行训练 后,所得的模型可以很好的表示每个样本类别 y 和属性 x 的关系。通过这个实验,我收获了处理二分类问题的基础知识,了解了如何评估模型性能,并学习了如何使用MindSpore框架实现机器学习模型。这些技能对于解决各种分类问题和将来进一步深入学习机器学习有重要意义。六、创新设计要实现多分类,导入数据等部分与2分类一致,输出标签需要独热编码,创建Softmax回归模型,python代码如下:import csvimport numpy as npimport mindspore as msfrom mindspore import nnfrom mindspore import contextfrom mindspore import datasetfrom mindspore.train.callback import LossMonitorfrom mindspore.common.api import ms_functionfrom mindspore.ops import operations as Pfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_split# 设置计算设备context.set_context(mode=context.GRAPH_MODE, device_target="Ascend")# 加载Iris数据集iris = load_iris()X, y = iris.data, iris.target# 创建标签映射label_map = {0: 'Iris-setosa', 1: 'Iris-versicolor', 2: 'Iris-virginica'}# 划分数据集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 定义Softmax回归模型class SoftmaxRegression(nn.Cell): def __init__(self, num_features, num_classes): super(SoftmaxRegression, self).__init__() self.fc = nn.Dense(num_features, num_classes) def construct(self, x): return self.fc(x)# 创建模型num_features = X_train.shape[1]num_classes = len(np.unique(y))model = SoftmaxRegression(num_features, num_classes)# 损失函数loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True)# 优化器optimizer = nn.SGD(params=model.trainable_params(), learning_rate=0.01)# 数据处理XY_train = list(zip(X_train, y_train))ds_train = dataset.GeneratorDataset(XY_train, ['x', 'y'])ds_train = ds_train.shuffle(buffer_size=len(X_train)).batch(32, drop_remainder=True)# 自定义训练循环def train_model(model, loss_fn, optimizer, num_epochs, ds_train): for epoch in range(num_epochs): total_loss = 0 for data in ds_train.create_dict_iterator(num_epochs=1): x = ms.Tensor(data['x'], ms.float32) y = ms.Tensor(data['y'], ms.int32) with ms_function(): output = model(x) loss = loss_fn(output, y) grads = P.GradOperation(get_by_list=True)(loss, model.trainable_params()) total_loss += loss.asnumpy() optimizer(grads) print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {total_loss / len(ds_train)}')# 训练模型train_model(model, loss_fn, optimizer, num_epochs=50, ds_train)# 评估模型def evaluate_model(model, X_test, y_test): x = ms.Tensor(X_test, ms.float32) y = ms.Tensor(y_test, ms.int32) output = model(x) predicted = np.argmax(output.asnumpy(), axis=1) accuracy = np.mean(predicted == y.asnumpy()) return accuracyaccuracy = evaluate_model(model, X_test, y_test)print(f'Test accuracy is {accuracy * 100:.2f}%')
-
目的与要求实验目的:学习 PyTorch 基础: 通过实现一个简单的卷积神经网络,学习如何使用PyTorch 构建深度学习模型。熟悉卷积神经网络结构: 了解卷积层、池化层、全连接层等卷积神经网络的基本组件,以及它们在图像分类任务中的作用。实践深度学习训练循环: 通过编写训练和测试循环,理解深度学习模型的训练过程,包括前向传播、反向传播、损失计算等步骤。掌握 PyTorch 工具: 学会使用 PyTorch 提供的工具和模块,例如优化器(Optimizer)和学习率调度器(Learning Rate Scheduler)。实验结果分析: 通过测试模型并分析测试结果,评估模型在手写数字识别任务上的性能。2、 实验要求:使用 PyTorch 实现一个卷积神经网络(CNN),并使用 MNIST 数据集进行训练和测试,从而实现手写数字识别实验原理1、卷积神经网络 (CNN):一类专门设计用于处理网格状数据(如图像)的深度学习模型。它包含卷积层、池化层和全连接层。卷积层能够有效地提取图像中的特征,而池化层则用于降采样,减小计算量。这有助于CNN学习图像中的局部模式和整体结构。2、MNIST 数据集:包含手写数字图像,每个图像都是28x28像素的灰度图。它是一个常用的基准数据集,用于测试图像分类算法的性能。每个图像都带有相应的标签,表示图像中的数字。3、激活函数 (Activation Function): 在神经网络中,激活函数引入非线性性质,允许网络学习复杂的映射关系。在本实验中,Rectified Linear Unit(ReLU)是主要的激活函数,用于在卷积层和全连接层之间引入非线性。4、损失函数 (Loss Function): 用于度量模型输出与真实标签之间的差异。5、优化器 (Optimizer): 用于更新模型参数以最小化损失。6、学习率调度器 (Learning Rate Scheduler): 用于动态调整学习率,帮助模型更好地收敛。7、训练循环: 包括前向传播、反向传播和参数更新。在训练期间,模型通过多次迭代学习如何准确地预测手写数字的标签。8、测试循环: 在训练结束后,模型通过测试集进行评估。测试集上的性能指标,如损失和准确率,可用于评估模型的泛化能力。使用环境PyTorchTorchvisionPyCharm2022.3.2实验过程环境设置:安装PyTorch和torchvision:代码理解:仔细阅读所提供的Python代码,了解代码的结构每个模块和函数的作用。下载Minst数据集:模型定义:查看Net类,了解卷积神经网络的结构,包括卷积层、池化层、全连接层等,补充forward函数。训练参数设置:阅读代码中的参数设置,包括批量大小、学习率、训练轮数等。训练循环:调用train函数执行训练循环,该函数包括多个训练周期,每个周期包括多个批次。在每个批次中,进行前向传播、损失计算、反向传播和参数更新。测试模型:调用test函数对训练后的模型在测试集上进行评估。该函数计算模型在测试集上的损失和准确率。调整训练参数,包括批量大小、学习率、训练轮数,观察训练过程中的训练损失和测试准确率等输出,评估模型的性能。五、实验结果及分析 batch_size=64,epochs=1,学习率=1时(即默认值),训练结果为:batch_size=32,epochs=1,学习率=1时,训练结果为:batch_size=128,epochs=1,学习率=1时,训练结果为:这表明对于更大或者更小的批量,模型的准确率会有所下降。batch_size=64,epochs=5,学习率=1时,训练结果为:可以发现损失轮数增加,训练时长增加,但准确率与平均损失会减少,模型更准确。batch_size=64,epochs=1,学习率=0.8时,训练结果为:可以发现,较小的学习率可能需要更多的训练时间,但可能导致更稳定的收敛。六、附录未修改 batch_size和learning_rate的代码:from __future__ import print_functionimport argparseimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsfrom torch.optim.lr_scheduler import StepLR# 定义神经网络模型class Net(nn.Module): def __init__(self): super(Net, self).__init__() # 卷积层 self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) # 丢弃层 self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) # 全连接层 self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): # 卷积和激活层 x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) # 最大池化层 x = F.max_pool2d(x, 2) x = self.dropout1(x) # 展平数据以供全连接层使用 x = torch.flatten(x, 1) # 全连接层,包括激活和丢弃 x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) # 输出层使用对数softmax激活 output = F.log_softmax(x, dim=1) return output# 训练模型的函数def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) # 负对数似然损失 loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('训练 Epoch: {} [{}/{} ({:.0f}%)]\t损失: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break# 测试模型的函数def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device)
-
一、实验目的了解逻辑回归的基本概念以及如何使用MindSpore进行逻辑回归实验基于两个种类的鸢尾花数据,使用 MindSpore 进行逻辑回归实验,分析自变量和因变量(概率)之间的关系,求得一个概率函数,即实现鸢尾花的二分类预测二、实验内容与实验步骤环境搭建数据准备数据预处理模型建立与训练模型评估 这是一个完整的实验步骤,我们首先根据手册实现基础实验——鸢尾花二分类预测,接着学习这种思路来尝试实现创新设计——鸢尾花多分类预测。三、实验环境华为云ModelArtsMindSpore 1.364位电脑四、实验过程与分析环境搭建 进入ModelArts,进入控制台,点击开发环境中的Notebook进行创建,按手册进行配置后打开Notebook,选择右侧“MindSpore-python3.7-aarch64”按钮,进入Notebook环境,于是我们可以开始运行目标代码。数据准备 在官网下载Iris数据集(因为莫名Iris 数据集官网和华为云 OBS的链接都是404),下载数据iris.data并上传到实验环境中。 数据预处理 在头文件配置MindSpore的运行环境,包括运行模式和目标设备,以便后续进行神经网络的训练或推理操作,接着打开导入的Iris数据集并查看部分数据。 定义一个标签映射字典,加载鸢尾花数据并将特征和标签存储在NumPy数组中。使用matplotlib库进行 2 维可视化,分别表示鸢尾花的两个类别(Iris-setosa和Iris-versicolor)的花萼长度与宽度之间的关系,以便通过可视化来观察数据分布。可以看出这两类样本是线性可分的。 将数据集分成训练集和测试集(比例为8:2),同时创建了适合神经网络训练的数据集对象 ds_train,用于后续的模型训练操作。模型建立与训练 我们使用的联系函数是Sigmoid函数,简单的绘制了一个图像。 下面是模型建立与训练的过程:定义了一个经验风险函数函数 Loss,继承自MindSpore的nn.Cell类。这个损失函数使用Sigmoid交叉熵损失来衡量模型输出与实际标签之间的差异,然后计算均值。创建一个神经网络模型 net,该模型包含一个全连接层,用于进行二元分类。输入维度为4,输出维度为1。实例化损失函数对象 loss,并创建了一个随机梯度下降(SGD)优化器 opt。模型评估 使用已训练的神经网络模型进行测试,并计算模型的测试准确度,测试集上的准确率达到了 1.0 左右,所以模型学会了区分2类鸢尾花。五、创新设计 该部分主要参考手册的思路以及csdn,因为能力有限无法完全独立实现。跳过环境配置与数据准备,直接从数据预处理开始。数据预准备 首先打开导入的Iris数据集,将特征数据和标签数据分别存储到 data_x和 data_y 中,接下载划分测试基于训练集(比例依然为8:2),测试集有30个数据。 接着将鸢尾花数据集的标签进行one-hot编码,将其从原始的数字编码转换为与类别数量相等的二进制编码,以便用于多类别分类任务,编码后的格式如下。 模型建立与训练 我们使用的是Softmax激活函数,输入特征经过权重的加权和指数化后,通过 softmax 函数得到每个类别的概率估计。 定义损失函数和梯度下降函数,遍历每个样本计算交叉熵损失并累加计算平均损失,通过计算每个样本的梯度获得平均梯度,后续用于权重w的更新。 接下来是模型训练的过程,使用全批量梯度下降法来更新模型的权重,并在每个训练迭代中计算并记录测试集和训练集上的准确度和损失。通过迭代的方式,监测模型的性能并输出当前的训练进展。最终返回了更新后的权重以及记录的性能指标,包括测试准确度、训练准确度、测试损失和训练损失。 初始化权重参数,开始训练模型。模型评估 定义accuracy函数,计算测试机的正确率。 训练完模型之后,查看输出的结果,并输出二维图像。 可以看出随着epoch变多,accuracy不断变大很快为1,train loss和test loss不断减小,train accuracy不断提高稳定在0.975,基本能实现三分类准确。
-
目的与要求实验目的:学习 PyTorch 基础: 通过实现一个简单的卷积神经网络,学习如何使用PyTorch 构建深度学习模型。熟悉卷积神经网络结构: 了解卷积层、池化层、全连接层等卷积神经网络的基本组件,以及它们在图像分类任务中的作用。实践深度学习训练循环: 通过编写训练和测试循环,理解深度学习模型的训练过程,包括前向传播、反向传播、损失计算等步骤。掌握 PyTorch 工具: 学会使用 PyTorch 提供的工具和模块,例如优化器(Optimizer)和学习率调度器(Learning Rate Scheduler)。实验结果分析: 通过测试模型并分析测试结果,评估模型在手写数字识别任务上的性能。2、 实验要求:使用 PyTorch 实现一个卷积神经网络(CNN),并使用 MNIST 数据集进行训练和测试,从而实现手写数字识别实验原理1、卷积神经网络 (CNN):一类专门设计用于处理网格状数据(如图像)的深度学习模型。它包含卷积层、池化层和全连接层。卷积层能够有效地提取图像中的特征,而池化层则用于降采样,减小计算量。这有助于CNN学习图像中的局部模式和整体结构。2、MNIST 数据集:包含手写数字图像,每个图像都是28x28像素的灰度图。它是一个常用的基准数据集,用于测试图像分类算法的性能。每个图像都带有相应的标签,表示图像中的数字。3、激活函数 (Activation Function): 在神经网络中,激活函数引入非线性性质,允许网络学习复杂的映射关系。在本实验中,Rectified Linear Unit(ReLU)是主要的激活函数,用于在卷积层和全连接层之间引入非线性。4、损失函数 (Loss Function): 用于度量模型输出与真实标签之间的差异。5、优化器 (Optimizer): 用于更新模型参数以最小化损失。6、学习率调度器 (Learning Rate Scheduler): 用于动态调整学习率,帮助模型更好地收敛。7、训练循环: 包括前向传播、反向传播和参数更新。在训练期间,模型通过多次迭代学习如何准确地预测手写数字的标签。8、测试循环: 在训练结束后,模型通过测试集进行评估。测试集上的性能指标,如损失和准确率,可用于评估模型的泛化能力。使用环境PyTorchTorchvisionPyCharm2022.3.2四、实验结果及分析 Test set: Average Loss :0.0473 Accuracy :9851/10000 99%五、附录未修改 batch_size和learning_rate的代码:from __future__ import print_functionimport argparseimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimfrom torchvision import datasets, transformsfrom torch.optim.lr_scheduler import StepLR# 定义神经网络模型class Net(nn.Module): def __init__(self): super(Net, self).__init__() # 卷积层 self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) # 丢弃层 self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) # 全连接层 self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): # 卷积和激活层 x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) # 最大池化层 x = F.max_pool2d(x, 2) x = self.dropout1(x) # 展平数据以供全连接层使用 x = torch.flatten(x, 1) # 全连接层,包括激活和丢弃 x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) # 输出层使用对数softmax激活 output = F.log_softmax(x, dim=1) return output# 训练模型的函数def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) # 负对数似然损失 loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('训练 Epoch: {} [{}/{} ({:.0f}%)]\t损失: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break# 测试模型的函数def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device)
-
请问这个问题如何解决啊,谢谢
-
中奖结果公示感谢各位小伙伴参与本次活动,欢迎关注华为云DTSE Tech Talk 技术直播更多活动~本次活动获奖名单如下:账号名 奖项名称 奖品名称hw081993541 报名转发有礼DTT定制T恤xj120141121 优质提问华为云定制长袖卫衣hw81541353 优质提问华为云定制长袖卫衣yili6666 官网抽奖华为云定制飞盘qingqingjiayuan6 官网抽奖华为云定制飞盘xiaozhongy 官网抽奖华为云定制飞盘/ 官网抽奖华为云定制保温杯hid_js_ujb69gaal_hs 微信抽奖华为云定制开发者礼品hw076230314 问卷抽奖华为云定制保温杯
-
一、导入Python环境import mindspore # mindspore.dataset import mindspore.dataset as ds # 数据集的载入 import mindspore.dataset.transforms.c_transforms as C # 常用转化算子 import mindspore.dataset.vision.c_transforms as CV # 图像转化算子 # mindspore.common from mindspore.common import dtype as mstype # 数据形态转换 from mindspore.common.initializer import Normal # 参数初始化 # mindspore.nn import mindspore.nn as nn # 各类网络层都在nn里面 from mindspore.nn.metrics import Accuracy, Loss # 测试模型用 # mindspore.train.callback from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor, Callback # 回调函数 from mindspore import Model # 承载网络结构 from mindspore import save_checkpoint, load_checkpoint # 保存与读取最佳参数 from mindspore import context # 设置mindspore运行的环境 import numpy as np # numpy import matplotlib.pyplot as plt # 可视化用 import copy # 保存网络参数用 # 数据路径处理 import os, stat二、MindSpore 环境设置1.MindSpore支持两种运行模式,在调试或者运行方面做了不同的优化: PYNATIVE模式:也称动态图模式,将神经网络中的各个算子逐一下发执行,方便用户编写和调试神经网络模型。2.GRAPH模式:也称静态图模式或者图模式,将神经网络模型编译成一整张图,然后下发执行。该模式利用图优化等技术提高运行性能,同时有助于规模部署和跨平台运行。device_target = context.get_context('device_target') # 获取运行装置(CPU,GPU,Ascend) dataset_sink_mode = True if device_target in ['Ascend','GPU'] else False # 是否将数据通过pipeline下发到装置上 context.set_context(mode = context.GRAPH_MODE, device_target = device_target) # 设置运行环境,静态图context.GRAPH_MODE指向静态图模型,即在运行之前会把全部图建立编译完毕 print(f'device_target: {device_target}') print(f'dataset_sink_mode: {dataset_sink_mode}')三、数据处理计算数据集平均数和标准差,数据标准化时使用。ds_train = ds.Cifar10Dataset(train_path) #计算数据集平均数和标准差,数据标准化时使用 tmp = np.asarray( [x['image'] for x in ds_train.create_dict_iterator(output_numpy=True)] ) RGB_mean = tuple(np.mean(tmp, axis=(0, 1, 2))) RGB_std = tuple(np.std(tmp, axis=(0, 1, 2))) print(RGB_mean) print(RGB_std)定义数据预处理函数。函数功能包括:加载数据集打乱数据集图像特征处理(包括尺寸大小变更、平移、标准化、训练时的随机裁剪、随机翻转等)批量输出数据重复def create_dataset(data_path, batch_size = 32, repeat_num=1, usage = 'train'): """ 数据处理 Args: data_path (str): 数据路径 batch_size (int): 批量大小 usage (str): 训练或测试 Returns: Dataset对象 """ # 载入数据集 data = ds.Cifar10Dataset(data_path) # 打乱数据集 data = data.shuffle(buffer_size=10000) # 定义算子 if usage=='train': trans = [ CV.Normalize(RGB_mean, RGB_std), # 数据标准化 # 数据增强 CV.Resize((32, 32)), CV.RandomCrop([32, 32], [4,4,4,4]), # 随机裁剪 CV.RandomRotation(20), CV.RandomHorizontalFlip(), # 随机翻转 CV.HWC2CHW() # 通道前移(为配适网络,CHW的格式可最佳发挥昇腾芯片算力) ] else: trans = [ CV.Normalize(RGB_mean, RGB_std), # 数据标准化 CV.HWC2CHW() # 通道前移(为配适网络,CHW的格式可最佳发挥昇腾芯片算力) ] typecast_op = C.TypeCast(mstype.int32) # 原始数据的标签是unint,计算损失需要int # 算子运算 data = data.map(input_columns='label', operations=typecast_op) data = data.map(input_columns='image', operations=trans) # 批处理 data = data.batch(batch_size, drop_remainder=True) # 重复 data = data.repeat(repeat_num) return data记录模型每个epoch的loss# 记录模型每个epoch的loss class TrainHistroy(Callback): """ 记录模型训练时每个epoch的loss的回调函数 Args: history (list): 传入list以保存模型每个epoch的loss """ def __init__(self, history): super(TrainHistroy, self).__init__() self.history = history # 每个epoch结束时执行 def epoch_end(self, run_context): cb_params = run_context.original_args() loss = cb_params.net_outputs.asnumpy() self.history.append(loss) # 测试并记录模型在测试集的loss和accuracy,每个epoch结束时进行模型测试并记录结果,跟踪并保存准确率最高的模型网络参数 class EvalHistory(Callback): """ 记录模型训练时每个epoch在测试集的loss和accuracy的回调函数,并保存准确率最高的模型网络参数 Args: model (Cell): 模型,评估loss和accuracy用 loss_history (list): 传入list以保存模型每个epoch在测试集的loss acc_history (list): 传入list以保存模型每个epoch在测试集的accuracy eval_data (Dataset): 测试集,评估模型loss和accuracy用 """ #保存accuracy最高的网络参数 best_param = None def __init__(self, model, loss_history, acc_history, eval_data): super(EvalHistory, self).__init__() self.loss_history = loss_history self.acc_history = acc_history self.eval_data = eval_data self.model = model # 每个epoch结束时执行 def epoch_end(self, run_context): cb_params = run_context.original_args() res = self.model.eval(self.eval_data, dataset_sink_mode=False) if len(self.acc_history)==0 or res['accuracy']>=max(self.acc_history): self.best_param = copy.deepcopy(cb_params.network) self.loss_history.append(res['loss']) self.acc_history.append(res['accuracy']) print('acc_eval: ',res['accuracy']) # 训练结束后执行 def end(self, run_context): # 保存最优网络参数 best_param_path = os.path.join(ckpt_path, 'best_param.ckpt') if os.path.exists(best_param_path): # best_param.ckpt已存在时MindSpore会覆盖旧的文件,这里修改文件读写权限防止报错 os.chmod(best_param_path, stat.S_IWRITE) save_checkpoint(self.best_param, best_param_path)四、模型构建1.相关理论卷积神经网络在实际运用中需要我们对网络模型进行修改来达到提高网络性能的目的,目前有一些常见的技术和策略来提高网络性能如下所示:(1).加深网络深度:增加网络的深度可以提高网络的表达能力,使其能够学习更复杂的特征和模式。通过增加网络的层数,可以逐渐提高性能;(2).增加卷积层和池化层:卷积层和池化层是CNN中的核心组件,它们能够提取输入数据中的局部特征并减少数据的空间维度。增加卷积层和池化层的数量可以提高网络对图像的抽象能力和不变性;(3).批归一化处理(BN):批归一化是一种常用的正则化技术,通过对每个批次的输入进行归一化,使网络更加稳定和鲁棒性。它有助于加速训练过程,提高网络的收敛性和泛化能力;(4).改进激活函数:选择适当的激活函数可以增强网络的非线性表达能力。常见的激活函数如ReLU、Leaky ReLU和ELU等,在一些情况下能够提供更好的性能;(5).利用Dropout函数:Dropout是一种正则化技术,可以随机地将网络中的一些神经元置零,从而减少过拟合。通过在训练过程中随机关闭一些神经元,Dropout可以提高网络的泛化能力。在卷积神经网络性能不断提升,当训练数据有限的时候卷积神经网络容易出现过拟合的情况,因此我们在提升卷积神经网络性能的同时也要注意防止卷积神经网络过拟合,主要有以下的一些方法:(1).数据扩增:通过对训练数据进行一系列随机变换和增强操作,如平移、旋转、缩放、镜像翻转等,可以生成更多样化的训练样本。这样可以增加数据的多样性,减少过拟合的风险,并提升网络的泛化能力;(2).正则化:正则化是通过在损失函数中添加正则项,对模型的复杂度进行惩罚,以减小过拟合的风险。常见的正则化方法包括L1正则化和L2正则化。L1正则化倾向于产生稀疏权重,而L2正则化则更倾向于在权重上施加均衡约束;(3).提早停止:提早停止是指在训练过程中,监测验证集上的性能,并在性能不再提升时停止训练。通过在合适的时间停止训练,可以防止过拟合的发生。提早停止方法通常与验证集的损失或准确率进行监测,并在验证集性能不再提升时停止训练;(4).权重衰减:权重衰减是通过在损失函数中添加一个惩罚项来减小权重的大小。这样可以防止权重过大,限制模型的复杂度,并减少过拟合的风险。权重衰减通常通过在损失函数中添加L2范数正则化项来实现。2.模型改进本次实验的卷积神经网络主要做了如下几个方面的修改:(1).增加了卷积层和池化层的个数:本实验使用了9层卷积层,卷积核大小为3x3,各层的卷积核数量为3、16、32、64、128、256、512。本实验采用逐步缓慢上升的卷积核数量的原因是当输出的卷积核数量远远多于输入的卷积核数量时卷积神经网络会出现过度参数化的情况,网络参数数量的急剧增加,从而增加模型的复杂性。也有可能会出现过度关注局部特征的情况,当输出的卷积核数量远多于输入的卷积核数量时,网络可能会过度关注局部细节特征。较多的卷积核数量可能会导致网络在较低层级过多地关注细粒度的局部特征,而忽略了更高层级的全局特征。这可能导致网络的表示能力偏向于局部特征,而无法充分捕捉输入数据的整体结构。经过实验的测试也可以发现,当卷积核上升幅度过大的时候,模型的准确率增长速度并不理想,并且会很快趋于饱和和出现过拟合的情况;(2).由于本实验中所采用的特征图的尺寸为32x32,卷积层和池化层的叠加很容易让特征图的尺寸变得很小,因此本实验中利用大小为1的padding填充来保证特征图的大小,使得输入输出的尺寸保持一致。除此之外,padding可以保持空间信息,防止信息丢失。在某些情况下,输入数据的边缘信息对于模型的性能很重要。通过添加padding,可以使卷积核能够在边缘位置进行更多的感受野操作,从而保留了输入数据的更多空间信息;(3).本实验中为了加快模型的收敛速度和提高鲁棒性,加入了批量归一化(BN)操作,BN作为归一化操作的一种,通过对每个小批量样本进行归一化操作,BN可以减小网络中不同层之间的内部协变量偏移,从而帮助梯度更好地传播。BN操作在推导时候的公式如下所示:y=γx/√(Var[x]+ε)+(β-(γE[x])/√(Var[x]+ε))一般来说,FC层之后会接一个BN的操作,然后再接一个激活函数。如果经历过高斯分布转换以后,没有做尺度变换和偏移,如a中所示数据分布呈现在-1~1之间,在这范围中,sigmoid函数基本上是线性的,所以丧失了激活函数的非线性的作用。而通过公式进行尺度变换和偏移得到的b中的3曲线就是做了BN操作后的结果。这样可以加快网络的收敛速度,使模型更快地达到收敛状态。同时使用BN还可以允许网络使用更高的学习率。由于BN减小了网络中不同层之间的内部协变量偏移,它可以使网络更容易训练。这使得可以使用更高的学习率来更新网络的参数,加速训练过程。使用更高的学习率有助于在相同时间内更好地探索参数空间,提高网络的性能。class LeNet5(nn.Cell): # 定义算子 def __init__(self, num_class=10, num_channel=3): super(LeNet5_2, self).__init__() self.conv1 = nn.Conv2d(num_channel, 16, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.conv2 = nn.Conv2d(16, 32, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.conv3 = nn.Conv2d(32, 64, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.conv4 = nn.Conv2d(64, 128, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.conv5 = nn.Conv2d(128, 256, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.conv6 = nn.Conv2d(256, 512, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.conv7 = nn.Conv2d(512, 512, 3, stride=1, pad_mode='pad', padding=1, weight_init=Normal(0.02)) self.fc1 = nn.Dense(512 * 2 * 2, 256, weight_init=Normal(0.02)) self.fc2 = nn.Dense(256, 64, weight_init=Normal(0.02)) self.fc3 = nn.Dense(64, num_class, weight_init=Normal(0.02)) self.relu = nn.ReLU() self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2) self.flatten = nn.Flatten() self.num_class = num_class self.bn1 = nn.BatchNorm2d(num_features=16) self.bn2 = nn.BatchNorm2d(num_features=32) self.bn3 = nn.BatchNorm2d(num_features=64) self.bn4 = nn.BatchNorm2d(num_features=128) self.bn5 = nn.BatchNorm2d(num_features=256) self.bn6 = nn.BatchNorm2d(num_features=512) self.bn7 = nn.BatchNorm1d(num_features=256) self.bn8 = nn.BatchNorm1d(num_features=64) # 构建网络 def construct(self, x): x = self.conv1(x) x = self.bn1(x) x = self.relu(x) x = self.conv2(x) x = self.bn2(x) x = self.relu(x) x = self.conv3(x) x = self.bn3(x) x = self.relu(x) x = self.max_pool2d(x) x = self.conv4(x) x = self.bn4(x) x = self.relu(x) x = self.conv5(x) x = self.bn5(x) x = self.relu(x) x = self.conv6(x) x = self.bn6(x) x = self.relu(x) x = self.conv7(x) x = self.bn6(x) x = self.relu(x) x = self.max_pool2d(x) x = self.conv7(x) x = self.bn6(x) x = self.relu(x) x = self.max_pool2d(x) x = self.conv7(x) x = self.bn6(x) x = self.relu(x) x = self.max_pool2d(x) x = self.flatten(x) x = self.fc1(x) x = self.bn7(x) x = self.relu(x) x = self.fc2(x) x = self.bn8(x) x = self.relu(x) x = self.fc3(x) return x五、模型训练更新后的模型在CIFAR-10数据集上的准确度能够达到92.3%。train_data = create_dataset(train_path, batch_size = 128, usage = 'train') # 训练数据集 test_data = create_dataset(test_path, batch_size = 128, usage= 'test') # 测试数据集 # 网络 network3 = LeNet5() # 损失函数 net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') # 优化器 net_opt = nn.Adam(params=network3.trainable_params(), learning_rate=0.001) # 模型 model = Model(network = network3, loss_fn=net_loss, optimizer=net_opt, metrics={'accuracy': Accuracy(), 'loss':Loss()}) ckpt_path = os.path.join('.', 'results') # 网络参数保存路径 hist = {'loss':[], 'loss_eval':[], 'acc_eval':[]} # 训练过程记录 # 网络参数自动保存,这里设定每2000个step保存一次,最多保存10次 config_ck = CheckpointConfig(save_checkpoint_steps=2000, keep_checkpoint_max=10) ckpoint_cb = ModelCheckpoint(prefix='checkpoint_lenet_3', directory=ckpt_path, config=config_ck) # 监控每次迭代的时间 time_cb = TimeMonitor(data_size=ds_train.get_dataset_size()) # 监控loss值 loss_cb = LossMonitor(per_print_times=500) # 记录每次迭代的模型准确率 train_hist_cb = TrainHistroy(hist['loss']) # 测试并记录模型在验证集的loss和accuracy,并保存最优网络参数 eval_hist_cb = EvalHistory(model = model, loss_history = hist['loss_eval'], acc_history = hist['acc_eval'], eval_data = test_data) %time epoch = 100 # 迭代次数 # 开始训练 model.train(epoch, train_data, callbacks=[train_hist_cb, eval_hist_cb, time_cb, ckpoint_cb, LossMonitor(per_print_times=500)], dataset_sink_mode=dataset_sink_mode) best_param = mindspore.load_checkpoint( os.path.join(ckpt_path, 'best_param.ckpt'), net=network3) res = model.eval(test_data, dataset_sink_mode=dataset_sink_mode) print(res)存在的问题及其解决方法(1).在网络训练的时候会出现过拟合的问题。答:通常用数据扩增,正则化,Dropout方法,提早停止,权重衰减等方法来解决过拟合的问题。在本实验中由于数据量规模小,使用Dropout方法,不仅不能提高模型的分类效果,还会因为丢弃了部分特征而降低分类效果。因此实验中采用了BatchNorm函数来实现不用Dropout方法也能够达到相应的效果(2).网络深度增加导致训练缓慢。答:换用网络租借服务器来提高训练速度。(3).卷积层卷积核增长幅度过大导致训练效果不好。答:卷积核数量增长改为2倍数增长,防止过于注重局部细节。
-
ModelArts小试一二什么是ModelArts官网介绍:ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。晟腾AI框架及对应关系一层 硬件算力层Atlas系列硬件——英伟达芯片NPU{Ascend 910(训练)/Ascend 310(推理)}——GPU{A100、H100}/TPU二层 芯片架构层异构计算架构cann——cuda三层 开发框架层Mindspore——pytorch/tensorflowMindStudio——pycharm四层 应用使能层MindX 模型部署技术ModelArts 云端模型训练技术ModelZoo AI模型代码仓五层 行业应用层各类应用我们可以看到modelArts位于整个框架的中上层,开发者可以在华为云上便捷地进行模型训练与部署而不用考虑各种底层问题。ModelArts提供了常见地模型、算法、数据,供初学者快速上手使用。准备数据集我们可以在AI gallery将一些常用的数据集下载到华为云的OBS桶(Object Storage Bucket)里的一个空的文件夹。 如果想要使用自己的数据集,我们也可以OBS,MRS,DLI以及DWS等服务导入数据。 当前ModelArts支持如下格式的数据集。图片:支持 .jpg、.png、.jpeg、.bmp四种图像格式,支持用户进行图像分类、物体检测、图像分割类型的标注。音频:支持.wav格式,支持用户进行声音分类、语音内容、语音分割三种类型的标注。文本:支持.txt、.csv格式,支持用户进行文本分类、命名实体、文本三元组三种类型的标注。视频:支持.mp4格式,支持用户进行视频标注。自由格式:管理的数据可以为任意格式,不支持标注,适用于无需标注或开发者自行定义标注的场景。如果您的数据集需存在多种格式数据,或者您的数据格式不符合其他类型数据集时,可选择自由格式的数据集。我们可以在ModelArts上对上传的数据集进行数据分析,具体的指标详见官方文档。 我们也可以在华为云完成数据标注等任务,ModelArts在“图像分类”和“物体检测”领域基于主动学习的的智能标注,大家可以先手动标注若干具有代表性、复杂性的数据,然后把其余的数据交由AI进行智能标注,目前的智能标注仍处于免费阶段,大家可以积极尝试,我试过正确率还是可以的,一些难度较高的图片会有提示的。除此之外,我建议大家积极利用数据集的发布功能,通过发布维护版本,并且发布后的数据的读取速度会更快。模型训练与部署模型也同样可以从AI gallery中获得,基本上所有经典的模型都可以在上面找到,包括很多最新的大模型。我们可以使用GPU进行训练,也可以用晟腾910训练。具体的步骤详见官方的文档,总体上讲ModelArts的训练是十分简单的,所有的参数都可以在创建训练任务时设置,训练输出位置建议每次训练都新建一个文件夹存放。目前Mindspore仍处于发展的初期,许多网络上的模型权重都是采用其他框架格式的而在ModelArts的AI应用管理中,我们可以将这些模型权重的格式转化为Mindspore框架以更好地部署在Ascend310或HiLens上,目前允许的输入框架有Caffe和TensorFlow。pytorch框架的权重可以先使用pytorch内置的函数将权重转化为onnx格式,然后在ModelArts-AI应用管理-模型转换中选择输入框架TensorFlow,里面有onnx相关的选项,当然也可以直接使用MindSpore的相关函数进行转换。
-
中奖结果公示感谢各位小伙伴参与本次活动,本次活动获奖名单如下:请获奖的伙伴在11月6日之前点击此处填写收货地址,如逾期未填写视为弃奖。再次感谢各位小伙伴参与本次活动,欢迎关注华为云DTSE Tech Talk 技术直播更多活动~直播简介【直播主题】MoE-LLM:开启大模型终身学习的可能性【直播时间】2023年11月1日 16:30-18:00【直播专家】吕昱峰 华为昇思MindSpore DTSE技术布道师【直播简介】多专家系统(Mixture of Experts,MoE)是大模型时代提高模型参数量的重要技术手段,而随着大模型的不断演进发展,怎么样使大模型具备持续终身学习能力,通过持续的数据不断提升大模型也成为了重要问题。MoE技术和持续终身学习的碰撞,使大模型具备终身学习成为可能。本次直播讲系统讲解终身学习、MoE技术,并以Google的lifelong-MoE和华为Pangu-sigma模型为例,阐述LLM终身学习的可能性。直播链接:cid:link_1活动介绍【互动方式】直播前您可以在本帖留下您疑惑的问题,专家会在直播时为您解答。直播后您可以继续在本帖留言,与专家互动交流。我们会在全部活动结束后对参与互动的用户进行评选。【活动时间】即日起—2023年11月2日【奖励说明】评奖规则:活动1:直播期间在直播间提出与直播内容相关的问题,对专家评选为优质问题的开发者进行奖励。奖品:华为云定制保温杯活动2:在本帖提出与直播内容相关的问题,由专家在所有互动贴中选出最优问题贴的开发者进行奖励。奖品:华为云定制无线鼠标更多直播活动直播互动有礼:官网直播间发口令“华为云 DTSE”抽华为云定制飞盘、填写问卷抽华为云定制保温杯等好礼分享问卷有礼 :邀请5位朋友以上完成问卷即可获得华为云定制帆布袋。老观众专属福利:连续报名并观看DTT直播3期以上抽送华为云DTT定制T恤。【注意事项】1、所有参与活动的问题,如发现为复用他人内容或直播间中重复内容,则取消获奖资格。2、为保证您顺利领取活动奖品,请您在活动公示奖项后2个工作日内私信提前填写奖品收货信息,如您没有填写,视为自动放弃奖励。3、活动奖项公示时间截止2023年11月3日,如未反馈邮寄信息视为弃奖。本次活动奖品将于奖项公示后30个工作日内统一发出,请您耐心等待。4、活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。5、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。6、其他事宜请参考【华为云社区常规活动规则】。
-
-
1.第一次使用华为的硬件计算设备,按照服务商的提示,安装310的firmware和npu-driver以及cann 并按照官网提示安装mindspore2.1.1-Ascend310-python3.7版本。2.安装mindyolo,并按要求准备数据集,使用指令进行训练,指令为:python train.py --config ./config/yolov5/yolov5.config系统报出如下错误:Traceback (most recent call last): File "train.py", line 321, in <module> train(args) File "train.py", line 93, in train set_default(args) File "/home/mindyolo/mindyolo/mindyolo/utils/utils.py", line 24, in set_default context.set_context(mode=args.ms_mode, device_target=args.device_target, max_call_depth=2000) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/_checkparam.py", line 1319, in wrapper return func(*args, **kwargs) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/context.py", line 1371, in set_context ctx.set_device_target(kwargs['device_target']) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/context.py", line 373, in set_device_target self.set_param(ms_ctx_param.device_target, target) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/context.py", line 175, in set_param self._context_handle.set_param(param, value) RuntimeError: Unsupported device target Ascend. This process only supports one of the ['CPU']. Please check whether the Ascend environd check whether current mindspore wheel package was built with "-e Ascend". For details, please refer to "Device load error message". ---------------------------------------------------- - Device load error message: ---------------------------------------------------- Load dynamic library: libmindspore_ascend.so.2 failed. liboptiling.so: cannot open shared object file: No such file or directory Load dynamic library: libmindspore_ascend.so.1 failed. liboptiling.so: cannot open shared object file: No such file or directory ---------------------------------------------------- - C++ Call Stack: (For framework developers) ---------------------------------------------------- mindspore/core/utils/ms_context.cc:327 SetDeviceTargetFromInner而后修改训练指令为:python train.py --config ./config/yolov5/yolov5.config --device_target 'CPU'爆出如下错误:2023-10-11 15:16:35,889 [WARNING] The first epoch will be compiled for the graph, which may take a long time; You can come back later :). albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8)) [INFO] albumentations load success albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8)) [INFO] albumentations load success albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8)) [INFO] albumentations load success albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8)) [INFO] albumentations load success [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:51.248.914 [mindspore/ops/primitive.py:814] The "use_copy_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:51.274.694 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:51.311.577 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:51.340.992 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:51.368.825 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.603.96 [mindspore/ops/primitive.py:814] The "use_copy_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.740.58 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.901.29 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.110.706 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.126.158 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.655.961 [mindspore/ops/primitive.py:814] The "use_copy_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.666.030 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.684.038 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.702.469 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] ME(7517:281470487776240,MainProcess):2023-10-11-15:16:52.721.278 [mindspore/ops/primitive.py:814] The "is_slice" is a constexpr function. The input arguments must be all constant value. [WARNING] UTILS(7517,fffef4704bf0,python3):2023-10-11-15:16:52.876.663 [mindspore/ccsrc/utils/comm_manager.cc:80] GetInstance] CommManager instance for CPU not found, return default instance. [ERROR] ANALYZER(7517,fffef4704bf0,python3):2023-10-11-15:16:53.084.608 [mindspore/ccsrc/pipeline/jit/static_analysis/async_eval_result.cc:69] HandleException] Exception happened, check the information as below. The function call stack (See file '/home/mindyolo/mindyolo/rank_0/om/analyze_fail.ir' for more details. Get instructions about `analyze_fail.ir` at https://www.mindspore.cn/search?inputValue=analyze_fail.ir): # 0 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:77 return train_step_func(*args) ^ # 1 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:59 if clip_grad: # 2 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:54 (loss, loss_items), grads = grad_fn(x, label) ^ # 3 In file /root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/ops/composite/base.py:584 return grad_(fn, weights)(*args) ^ # 4 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:47 loss, loss_items = loss_fn(pred, label, x) ^ # 5 In file /home/mindyolo/mindyolo/mindyolo/models/losses/yolov5_loss.py:88 for layer_index, pi in enumerate(p): # layer index, layer predictions ^ # 6 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:47 loss, loss_items = loss_fn(pred, label, x) ^ # 7 In file /home/mindyolo/mindyolo/mindyolo/models/losses/yolov5_loss.py:88 for layer_index, pi in enumerate(p): # layer index, layer predictions ^ # 8 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:47 loss, loss_items = loss_fn(pred, label, x) ^ # 9 In file /home/mindyolo/mindyolo/mindyolo/models/losses/yolov5_loss.py:88 for layer_index, pi in enumerate(p): # layer index, layer predictions ^ # 10 In file /home/mindyolo/mindyolo/mindyolo/utils/train_step_factory.py:47 loss, loss_items = loss_fn(pred, label, x) ^ # 11 In file /home/mindyolo/mindyolo/mindyolo/models/losses/yolov5_loss.py:88 for layer_index, pi in enumerate(p): # layer index, layer predictions ^ # 12 In file /home/mindyolo/mindyolo/mindyolo/models/losses/yolov5_loss.py:133 loss_item = ops.stop_gradient(ops.stack((loss, lbox, lobj, lcls))) ^ # 13 In file /root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/ops/function/array_func.py:2207 return _stack(tensors) ^ Traceback (most recent call last): File "train.py", line 321, in <module> train(args) File "train.py", line 293, in train profiler_step_num=args.profiler_step_num File "/home/mindyolo/mindyolo/mindyolo/utils/trainer_factory.py", line 171, in train cur_step=cur_step,cur_epoch=cur_epoch) File "/home/mindyolo/mindyolo/mindyolo/utils/trainer_factory.py", line 366, in train_step loss, loss_item, _, grads_finite = self.train_step_fn(imgs, labels, True) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/common/api.py", line 807, in staging_specialize out = _MindsporeFunctionExecutor(func, hash_obj, input_signature, process_obj, jit_config)(*args, **kwargs) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/common/api.py", line 106, in wrapper results = fn(*arg, **kwargs) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/common/api.py", line 526, in __call__ raise err File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/common/api.py", line 523, in __call__ phase = self.compile(self.fn.__name__, *args_list, **kwargs) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/common/api.py", line 599, in compile is_compile = self._graph_executor.compile(self.fn, compile_args, kwargs, phase, True) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/ops/operations/array_ops.py", line 3108, in __infer__ all_shape = _get_stack_shape(value, x_shape, x_type, self.axis, self.name) File "/root/miniconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/ops/operations/array_ops.py", line 3002, in _get_stack_shape raise TypeError("For \'{}\', all types should be same, but got {}".format(prim_name, x_type)) TypeError: For 'Stack', all types should be same, but got (mindspore.tensor[float32], mindspore.tensor[float32], mindspore.tensor[float32], mindspore.float32)请问我这一流程出现的问题在哪?mindspore官方说Ascend310目前仅支持推理以及鲲鹏920是cpu还是nup?
-
自定义镜像看了官方的文档搞不明白modelarts没有提供的这个版本
推荐直播
-
手把手教你实现mini版TinyVue组件库
2024/04/17 周三 16:30-18:00
阿健 华为云前端开发DTSE 技术布道师
在前端Web开发过程中,跨版本兼容性问题是一个普遍存在的挑战。为了解决这些痛点,OpenTiny推出跨端、跨框架、跨版本组件库TinyVue。本期直播聚焦于华为云的前端开源组件库TinyVue,通过mini版TinyVue的代码实践与大家共同深入解读Vue2/Vue3不同版本间的差异。这对于提升用户体验,减低维护成本,提升开发者技术洞察有重要意义。
回顾中 -
如何快速入驻O3使能伙伴服务作业平台
2024/04/18 周四 16:00-16:40
红喜 O3伙伴服务工作台技术总架构师
本期邀请O3伙伴服务工作台技术总架构师,讲解O3伙伴服务工作台的设计理念,及演示工作台关键能力与价值点,带你2步快速入驻工作台。O3伙伴服务工作台,具备在线Online、开放Open、协同Orchestration的特征,作为伙伴服务的统一入口,支持伙伴以租户方式入驻,涵盖伙伴工程师、管理者等多角色,是一个以伙伴服务领域全旅程作业为中心,整合华为服务各专业领域能力,开放共享的一站式作业平台。
去报名
热门标签