-
使用less样式预编译器会提高高级组件开发效率,目前平台是否支持?不支持的话平台后面版本是否考虑补齐这个能力?
-
使用VMware + Ubuntu ,使用A200DK的烧卡程序进行烧卡,发生以下错误。开始以为是SD卡出了问题,换了一张卡问题依旧,后来用fdisk -l 命令查看,看到无法识别到读卡器,解决方法1.VMware USB控制器兼容性设置我的读卡器是USB3.0的,在虚拟机设置->USB控制器->兼容性选USB3.02.将读卡器连到虚拟机虚拟机->可移动设备中找到读卡器,点击连接(从主机断开)sudo fdisk -l 命令可以看到32G的SD卡了
-
**- **当今,在深度学习领域研究过程中计算量迅速增大,如何在保证模型的性能同时能够有效降低深度学习的运算成本和内存成为了一个重要的思考方向。**** **1.通过冻结部分网络结构层来达到迁移学习或者降低运算成本是一种有效的方法。在实践过程中可以选择忽略或者冻结部分层数中的权重参数以达到跳过某层直接进行学习训练,在MindSpore中具体体现在grad freeze模块中,其大概思路如下图所示:**图片来源:arXiv:2011.14087v1 [cs.LG] 28 Nov 2020**2. 减少对于部分数据的正则化、标准化处理或者说具体使用也成了一种优化训练的思路。在MindSpore框架下具体体现在使用了less Batch Normalization来达到减少Batch Normalization的数量同时保证在训练过程中能够提高网络的表现性能以及保证网络的准确度。**\mindspore\nn\acc\grad_freeze.py 代码分析```pythonimport numpy as npfrom mindspore.nn.cell import Cellfrom mindspore.nn.optim import Optimizerfrom mindspore.common import Tensor, Parameterfrom mindspore.common import dtype as mstype__all__ = ['CONTINUOUS_STRATEGY', 'INTERVAL_STRATEGY', 'split_parameters_groups', 'generate_freeze_index_sequence', 'FreezeOpt']CONTINUOUS_STRATEGY = 0INTERVAL_STRATEGY = 1def split_parameters_groups(net, freeze_para_groups_number): ###选择部分参数常量完成冻结梯度下降训练 grouped_params = [] tmp = [] for para in net.trainable_params(): name = para.name # 保证在卷积层后面的BN参数没有被选中 if 'bn' in name or 'bias' in name: tmp.append(para) elif len(tmp) >= 3: grouped_params.append(tmp) tmp = [para] else: tmp.append(para) if tmp: grouped_params.append(tmp) stride = len(grouped_params) // '''冻结常量数量''' freeze_grouped_params = [sum(grouped_params[i * stride:], []) for i in range(freeze_para_groups_number)] return freeze_grouped_params'''返回冻结常量'''def generate_freeze_index_sequence(parameter_groups_number, freeze_strategy, freeze_p, steps_per_epoch, max_epoch): """生成索引序列来完成梯度下降训练""" total_step = steps_per_epoch * max_epoch * 1.01 '''局部连续冻结训练策略''' if freeze_strategy == CONTINUOUS_STRATEGY: zero_cnt = int(freeze_p * (parameter_groups_number - 1) / (1 - freeze_p) + 0.5) sub_idx = [0] * zero_cnt + list(range(1, parameter_groups_number)) freeze_idxes = [] while len(freeze_idxes) < total_step: freeze_idxes += sub_idx return freeze_idxes###返回冻结索引 '''间歇冻结训练策略''' if freeze_strategy == INTERVAL_STRATEGY: index_all = list(range(1, parameter_groups_number)) prob = [x / sum(index_all) for x in index_all] freeze_idxes = [0] zero_cnt = 1 freeze_cnt = 0 while len(freeze_idxes) < total_step: freeze_p_cur = 1.0 * freeze_cnt / (zero_cnt + freeze_cnt) if freeze_p_cur < 1 - freeze_p: freeze_idxes.append(int(np.random.choice(index_all[::-1], p=prob))) freeze_cnt += 1 else: freeze_idxes.append(0) zero_cnt += 1 return freeze_idxes###返回冻结索引 raise ValueError(f"Unsupported freezing training strategy '{freeze_strategy}'")class FreezeOpt(Cell): '''冻结选择类''' def __init__(self, opt, train_parameter_groups=None, train_strategy=None): super(FreezeOpt, self).__init__() if not isinstance(opt, Optimizer): raise TypeError(f"The first arg 'opt' must be an Optimizer instance, but got {type(opt)}") if train_strategy is not None and train_parameter_groups is None: raise ValueError("When the 'train_strategy' is specified, the value of 'train_parameter_groups' " "must also be specified") opt_class = type(opt) opt_init_args = opt.init_args self.opts = [] if train_parameter_groups is None: groups_num = 10 step = 6 parameters = opt.parameters para_groups = (parameters[(i * step):] for i in range(groups_num)) self.opts = [opt_class(params=params, **opt_init_args) for params in para_groups] else: if not isinstance(train_parameter_groups, (tuple, list)): raise TypeError("The specified 'train_parameter_groups' should be tuple or list") for params in train_parameter_groups: if not isinstance(params, (tuple, list)): raise TypeError("The each element of 'train_parameter_groups' should be tuple or list " "to store the Parameter") for para in params: if not isinstance(para, Parameter): raise TypeError("The element of each group should be the Parameter") '''生成opt与常量组之间一对一的联系''' self.opts.append(opt_class(params=params, **opt_init_args)) if isinstance(train_strategy, (tuple, list)): for ele in train_strategy: if not isinstance(ele, int): raise ValueError("The element in train_strategy should be int number") self.train_strategy = Tensor(train_strategy, mstype.int32) elif isinstance(train_strategy, Tensor): if train_strategy.ndim != 1 or train_strategy.dtype != mstype.int32: raise ValueError("When train_strategy is a Tensor, the dimension should be 1 and " "the dtype should be int32") self.train_strategy = train_strategy elif train_strategy is None: self.train_strategy = None else: raise TypeError("The specified 'train_strategy' should be None, tuple, list or Tensor")```mindspore\mindspore\nn\acc\less_batch_normalization.py 代码分析```python"""less Batch Normalization"""import numpy as npfrom mindspore.nn.cell import Cellfrom mindspore.nn.layer import Densefrom mindspore.ops import operations as Pfrom mindspore.common import Tensor, Parameterfrom mindspore.common import dtype as mstypefrom mindspore.common.initializer import initializer__all__ = ["LessBN"]class CommonHeadLastFN(Cell):#Batch Normalization层定义 def __init__(self, in_channels, out_channels, weight_init='normal', bias_init='zeros', has_bias=True): super(CommonHeadLastFN, self).__init__() weight_shape = [out_channels, in_channels] #权重常量初始化 self.weight = Parameter(initializer(weight_init, weight_shape), requires_grad=True, name='weight') self.x_norm = P.L2Normalize(axis=1) self.w_norm = P.L2Normalize(axis=1) self.fc = P.MatMul(transpose_a=False, transpose_b=True) self.multiplier = Parameter(Tensor(np.ones([1]), mstype.float32), requires_grad=True, name='multiplier') #偏置常量初始化 self.has_bias = has_bias if self.has_bias: bias_shape = [out_channels] self.bias_add = P.BiasAdd() self.bias = Parameter(initializer(bias_init, bias_shape), requires_grad=True, name='bias') def construct(self, x): x = self.x_norm(x) w = self.w_norm(self.weight) x = self.fc(x, w) if self.has_bias: x = self.bias_add(x, self.bias) x = self.multiplier * x return xclass LessBN(Cell):#减小Batch-Normalization的数量,来提高神经网络性能并提高准确率 def __init__(self, network): super(LessBN, self).__init__() self.network = network self.network.set_acc("less_bn") self.network.update_cell_prefix() self._convert_to_less_bn_net(self.network) self.network.add_flags(defer_inline=True) def _convert_dense(self, subcell): #存储形式转变函数 prefix = subcell.param_prefix new_subcell = CommonHeadLastFN(subcell.in_channels, subcell.out_channels, subcell.weight, subcell.bias, subcell.has_bias) new_subcell.update_parameters_name(prefix + '.') return new_subcell def _convert_to_less_bn_net(self, net): #将网络转化为less-bn网络 cells = net.name_cells() dense_name = [] dense_list = [] for name in cells: subcell = cells[name] if subcell == net: continue elif isinstance(subcell, (Dense)): dense_name.append(name) dense_list.append(subcell) else: self._convert_to_less_bn_net(subcell) if dense_list: new_subcell = self._convert_dense(dense_list[-1]) net.insert_child_to_cell(dense_name[-1], new_subcell) def construct(self, *inputs): return self.network(*inputs)```
-
【功能模块】搭建环境--制卡【操作步骤&问题现象】在搭建atlas200DK环境时,遇到了问题。内存卡时64G的,格式化过了。使用的是读卡器制卡,提示:[ERROR] Invalid SD card or size is less then 8G, please check SD Card.看过了论坛里的其他帖子,但是问题还没解决。【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
【操作步骤】1、删除aicore对应算子信息库定义2、算子部署,进行ST测试【问题现象】1、UT测试用例全部跑通2、ST测试用例uint32 128M数据大小用例无法跑通3、ST测试用例uint64、FP16、FP32、FP64全部无法跑通4、无法跑通的用例均报错0x285、删除aicore Less算子信息库定义,算子部署,进行ST测试,将ST测试算子改为Less,用例全部跑通6、toolkit、nnae版本号为3.3.0alpha003,升级最新5.0.2.alpha002全部用例无法跑通(含Less算子)7、启用了ParallelFor多线程接口,但运行时间均远高于TF原生算子【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
less命令与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动。“↑”可以向上滚动一行;“↓”可以向下滚动一行“PageUp”可以向上翻动一页;“PageDown”可以向下翻动一页“Enter”可以向下滚动一行;空格键可以向下滚动一页以文件test.txt为实例,文件test.txt内容如下qw.erty.uiop asd.fgh.jkl zxcv.bnm. #!/bin/sh set -e # Mark as not-for-autoremoval those kernel packages that are: # - the currently booted version # - the kernel version we've been called for # - the latest kernel version (as determined by debian version number) # - the second-latest kernel version # # In the common case this results in two kernels saved (booted into the # second-latest kernel, we install the latest kernel in an upgrade), but # can save up to four. Kernel refers here to a distinct release, which can # potentially be installed in multiple flavours counting as one kernel. eval $(apt-config shell APT_CONF_D Dir::Etc::parts/d) test -n "${APT_CONF_D}" || APT_CONF_D="/etc/apt/apt.conf.d" config_file="${APT_CONF_D}/01autoremove-kernels" eval $(apt-config shell DPKG Dir::bin::dpkg/f) test -n "$DPKG" || DPKG="/usr/bin/dpkg" list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg(:.*)?$/ && $2 !~ /-dbgsym(:.*)?$/ { print $2,$3; }' \ | sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')" debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)" if [ -n "$1" ]; then installed_version="$(echo "$list" | awk "\$1 == \"$1\" { print \$2;exit; }")" fi unamer="$(uname -r | tr '[A-Z]' '[a-z]')" if [ -n "$unamer" ]; then running_version="$(echo "$list" | awk "\$1 == \"$unamer\" { print \$2;exit; }")" fi # ignore the currently running version if attempting a reproducible build if [ -n "${SOURCE_DATE_EPOCH}" ]; then unamer="" running_version="" fi latest_version="$(echo "$debverlist" | sed -n 1p)" previous_version="$(echo "$debverlist" | sed -n 2p)" debkernels="$(echo "$latest_version $installed_version $running_version $previous_version" | sort -u | sed -e '/^$/ d')" kernels="$( (echo "$1 $unamer"; for deb in $debkernels; do echo "$list" | awk "\$2 == \"$deb\" { print \$1; }"; done; ) \ | sed -e 's#\([\.\+]\)#\\\1#g' -e '/^$/ d' | sort -u)" generateconfig() { cat <<EOF // DO NOT EDIT! File autogenerated by $0 APT::NeverAutoRemove { EOF for package in $(apt-config dump --no-empty --format '%v%n' 'APT::VersionedKernelPackages'); do for kernel in $kernels; do echo " \"^${package}-${kernel}$\";" done done echo '};' if [ "${APT_AUTO_REMOVAL_KERNELS_DEBUG:-true}" = 'true' ]; then cat <<EOF /* Debug information: # dpkg list: $(dpkg -l | grep '\(linux\|kfreebsd\|gnumach\)-image-') # list of installed kernel packages: $list # list of different kernel versions: $debverlist # Installing kernel: $installed_version ($1) # Running kernel: ${running_version:-ignored} (${unamer:-ignored}) # Last kernel: $latest_version # Previous kernel: $previous_version # Kernel versions list to keep: $debkernels # Kernel packages (version part) to protect: $kernels */ EOF fi } generateconfig "$@" > "${config_file}.dpkg-new" mv -f "${config_file}.dpkg-new" "$config_file" chmod 444 "$config_file"1、查看文件wyp@UOS-WYP1:~/Desktop$ less test.txt2、显示文件内容并且显示文件百分比。wyp@UOS-WYP1:~/Desktop$ less -m test.txt3、查看命令历史使用记录并通过less分页显示wyp@UOS-WYP1:~/Desktop$ history |less
-
深度优先搜索 (DFS),顾名思义,就是试图尽可能快地深入树中。每当搜索方法可以做出选择时,它选择最左(或最右)的分支(尽管它通常选择最左分支)。可以将图所示的树作为DFS的一个例子。树的深度优先搜索遍历。将按照A、B、D、E、C、F、G的顺序访问节点 树的遍历算法将多次“访问”某个节点,例如,在图中,依次访问A、B、D、B、E、B、A、C、F、C、G。一般说来,只有第一次访问才会被声明,如图中标题所示。如图所示,在计算机和视频游戏出现之前,拼图是一个流行的儿童拼图。塑料方框内装入了15个编号的方块。只有一个方块是空的,这样方块就可以朝4个方向中的任何一个方向滑动。 方块1可以向南滑动,方块7可以向北移动一个方格,方块2可以向东移动,方块15可以向西移动一个位置。拼图的目标是从任意初始状态开始,重新排列编号的方块,获得目标状态。在图(b)中,目标状态由按顺序排列的方块组成,但也可以选择任意的排列作为目标。从一个给定的初始状态开始,恰好可以到达一半的可能拼图布局。将方框位置编号为1到16,如图(b)中的目标状态所示。空白方格占据了位置16。Location(i )代表了编号为i 的方块的初始状态的位置编号。Less(i )表示的是符合j <i 和Location (j )> Location (i )的方块的数目。 如图(a)所示的初始状态,因为编号为2的方块是出现在较高位置(location)的唯一方块,所以Less(4)等于1。 定理:只有当j =1 j =16 Less(i )+x ( j 为1~16) 的总和为偶数时,图2.17(b)的目标状态才是从初始状态可达的状态。如果在初始状态时,空白块是在图2.17(c)中阴影区域中的一块,那么x 的值为1;否则,x 的值为0。
-
SD卡制卡失败,提示“invalid sd card or size is less then 8G”,刚买的金士顿32G
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
去报名 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签