【mxnet速成】mxnet图像分类从模型自定义到测试

2022年AI Python框架实战选型指南:PyTorch、TF、JAX、HF与Lightning深度对比 深度学习框架是AI工程落地的核心基础设施,其选型直接决定开发效率、部署稳定性与团队协作成本。从计算图机制(动态图vs静态图)、分布式训练支持、模型导出标准(SavedModel/TorchScript/ONNX)到高层抽象能力(Trainer/Pipeline),不同框架在可调试性、工业闭环性、数学表达力和开箱即用性上各具优势。PyTorch以动态图和Python原生体验主导研究与快速迭代场景;TensorFlow凭借SavedModel和TF Serving构建端到端生产链路;JAX以函数式范式和XLA编 阅读详情

文章首发于微信公众号《与有三学AI》

【mxnet速成】mxnet图像分类从模型自定义到测试

这是给大家准备的mxnet速成例子

这一次我们讲讲mxnet,相关的代码、数据都在我们 Git 上,希望大家 Follow 一下这个 Git 项目,后面会持续更新不同框架下的任务。

https://github.com/longpeng2008/LongPeng_ML_Course

作者&编辑 | 言有三

 

01 mxnet是什么

mxnet是amazon的官方框架,下面参考mxnet的官方简介

https://mxnet-bing.readthedocs.io/en/latest/zh/overview.html

深度学习系统通常有两种编程方式,一种是声明式编程(declarative programming),用户只需要声明要做什么,而具体执行则由系统完成。以Caffe,TensorFlow的计算图为代表。优点是由于在真正开始计算的时候已经拿到了整个计算图,所以可以做一系列优化来提升性能。实现辅助函数也容易,例如对任何计算图都提供forward和backward函数,另外也方便对计算图进行可视化,将图保存到硬盘和从硬盘读取。缺点是debug很麻烦,监视一个复杂的计算图中的某个节点的中间结果并不简单,逻辑控制也不方便。

一种是命令式编程(imperative programming),以numpy,torch/pytorch为代表,每个语句按照原来的意思顺序执行。它 的特点是语义上容易理解,灵活,可以精确控制行为。通常可以无缝地和主语言交互,方便地利用主语言的各类算法,工具包,debug和性能调试器,但是实现统一的辅助函数和提供整体优化都很困难。

MXNet尝试将两种模式无缝的结合起来。在命令式编程上MXNet提供张量运算,进行模型的迭代训练和更新中的控制逻辑;在声明式编程中MXNet支持符号表达式,用来描述神经网络,并利用系统提供的自动求导来训练模型。

随着pytorch的崛起,mxnet已经掉出前三梯队,但不影响喜欢它的人使用。相比于重量级的tensorflow,mxnet非常轻量,占用内存少,分布式训练方便,常被用于比赛刷榜(见笔者以前用来刷榜的文)。

如何步入深度学习刷榜第一重境界

 

02 mxnet安装配置

喜欢自定义安装和精确控制版本的朋友,可以自行编译,喜欢偷懒的pip安装即可,方便快捷。

sudo pip install mxnet

不过如果你要多机多卡使用,还是源码编译安装吧。

https://github.com/apache/incubator-mxnet

 

03 mxnet自定义数据

下面就开始我们的任务,跟以往项目一样,从自定义数据和自定义网络开始。

mxnet分类任务要求的输入分类文件的格式与caffe不一样,为下面的格式,其中分别是序号,标签,路径

01../../../../../datas/mouth/1/182smile.jpg

11../../../../../datas/mouth/1/435smile.jpg

数据的载入需要用到接口DataBatch和DataIter

https://mxnet.incubator.apache.org/api/python/io/io.html

首先我们定义一下相关的参数配置,主要用于载入训练/测试数据集路径data-train,data-val,rgb均值rgb-mean,类别数目num-classes与训练样本集大小num-examples

def add_data_args(parser):

    data = parser.add_argument_group('Data', 'the input images')

    data.add_argument('--data-train', type=str, help='the training data')

    data.add_argument('--data-val', type=str, help='the validation data')

    data.add_argument('--rgb-mean', type=str, default='123.68,116.779,103.939',help='a tuple of size 3 for the mean rgb')

    data.add_argument('--pad-size', type=int, default=0,

help='padding the input image')

    data.add_argument('--image-shape', type=str,

help='the image shape feed into the network, e.g. (3,224,224)')

    data.add_argument('--num-classes', type=int,help='the number of classes')

    data.add_argument('--num-examples', type=int, help='the number of training examples')

    data.add_argument('--data-nthreads', type=int, default=4,help='number of threads for data decoding')

    data.add_argument('--benchmark', type=int, default=0,

help='if 1, then feed the network with synthetic data')

    data.add_argument('--dtype', type=str, default='float32',help='data type: float32 or float16')

    return data

然后,使用mx.img.ImageIter来载入图像数据

 train = mx.img.ImageIter(

        label_width         = 1,

        path_root    = 'data/', 

        path_imglist         = args.data_train,

        data_shape          = (3, N_pix, N_pix),

        batch_size          = args.batch_size,

        rand_crop           = True,

        rand_resize         = True,

        rand_mirror         = True,

        shuffle             = True,

        brightness          = 0.4,

        contrast            = 0.4,

        saturation          = 0.4,

        pca_noise           = 0.1,

        num_parts           = nworker,

        part_index          = rank)

注意到上面配置了rand_crop,rand_resize,rand_mirror,shuffle,brightness,contrast,saturation,pca_noise等选项,这些就是常见的数据增强操作了,如果不懂,可以去看看我们以前的文章

[综述类] 一文道尽深度学习中的数据增强方法(上)

【技术综述】深度学习中的数据增强(下)

【开源框架】一文道尽主流开源框架中的数据增强

mxnet的数据增强接口使用非常的方便,定义如下

def add_data_aug_args(parser):

    aug = parser.add_argument_group(

        'Image augmentations', 'implemented in src/io/image_aug_default.cc')

    aug.add_argument('--random-crop', type=int, default=1,help='if or not randomly crop the image')

    aug.add_argument('--random-mirror', type=int, default=1,help='if or not randomly flip horizontally')

    aug.add_argument('--max-random-h', type=int, default=0,help='max change of hue, whose range is [0, 180]')

    aug.add_argument('--max-random-s', type=int, default=0,help='max change of saturation, whose range is [0, 255]')

    aug.add_argument('--max-random-l', type=int, default=0,help='max change of intensity, whose range is [0, 255]')

    aug.add_argument('--max-random-aspect-ratio', type=float, default=0,help='max change of aspect ratio, whose range is [0, 1]')

    aug.add_argument('--max-random-rotate-angle', type=int, default=0,help='max angle to rotate, whose range is [0, 360]')

    aug.add_argument('--max-random-shear-ratio', type=float, default=0,help='max ratio to shear, whose range is [0, 1]')

    aug.add_argument('--max-random-scale', type=float, default=1,help='max ratio to scale')

    aug.add_argument('--min-random-scale', type=float, default=1,help='min ratio to scale, should >= img_size/input_shape. otherwise use --pad-size')

    return aug

可以看到level >= 1,就可以使用随机裁剪,镜像操作,level >= 2,就可以使用对比度变换操作,level >= 3,就可以使用旋转,缩放等操作。

def set_data_aug_level(aug, level):

    if level >= 1:

        aug.set_defaults(random_crop=1, random_mirror=1)

    if level >= 2:

        aug.set_defaults(max_random_h=36, max_random_s=50, max_random_l=50)

    if level >= 3:

        aug.set_defaults(max_random_rotate_angle=10, max_random_shear_ratio=0.1, max_random_aspect_ratio=0.25)

 

04 mxnet网络搭建

同样是三层卷积,两层全连接的网络,话不多说,直接上代码,使用到的api是mxnet.symbol

import mxnet as mx

def get_symbol(num_classes, **kwargs):
   if 'use_global_stats' not in kwargs:
       use_global_stats = False
   else:
       use_global_stats = kwargs['use_global_stats']

   data = mx.symbol.Variable(name='data')
   conv1 = mx.symbol.Convolution(name='conv1', data=data , num_filter=12, kernel=(3,3), stride=(2,2), no_bias=True)
   conv1_bn = mx.symbol.BatchNorm(name='conv1_bn', data=conv1 , use_global_stats=use_global_stats, fix_gamma=False, eps=0.000100)
   conv1_scale = conv1_bn
   relu1 = mx.symbol.Activation(name='relu1', data=conv1_scale , act_type='relu')
   conv2 = mx.symbol.Convolution(name='conv2', data=relu1 , num_filter=24, kernel=(3,3), stride=(2,2), no_bias=True)
   conv2_bn = mx.symbol.BatchNorm(name='conv2_bn', data=conv2 , use_global_stats=use_global_stats, fix_gamma=False, eps=0.000100)
   conv2_scale = conv2_bn
   relu2 = mx.symbol.Activation(name='relu2', data=conv2_scale , act_type='relu')
   conv3 = mx.symbol.Convolution(name='conv3', data=relu2 , num_filter=48, kernel=(3,3), stride=(2,2), no_bias=True)
   conv3_bn = mx.symbol.BatchNorm(name='conv3_bn', data=conv3 , use_global_stats=use_global_stats, fix_gamma=False, eps=0.000100)
   conv3_scale = conv3_bn
   relu3 = mx.symbol.Activation(name='relu3', data=conv3_scale , act_type='relu')
   pool = mx.symbol.Pooling(name='pool', data=relu3 , pooling_convention='full', global_pool=True, kernel=(1,1), pool_type='avg')
   fc = mx.symbol.Convolution(name='fc', data=pool , num_filter=num_classes, pad=(0, 0), kernel=(1,1), stride=(1,1), no_bias=False)
   flatten = mx.symbol.Flatten(data=fc, name='flatten')
   softmax = mx.symbol.SoftmaxOutput(data=flatten, name='softmax')
   return softmax

if __name__ == "__main__":
   net = get_symbol(2)  ##二分类任务
   net.save('simpleconv3-symbol.json')

最后我们可以将其存到json文件里,net.save('simpleconv3-symbol.json'),下面是conv1的部分,详细大家可以至git查看

    {

      "op": "Convolution", 

      "name": "conv1", 

      "attr": {

        "kernel": "(3, 3)", 

        "no_bias": "True", 

        "num_filter": "12", 

        "stride": "(2, 2)"

      }, 

      "inputs": [[0, 0, 0], [1, 0, 0]]

    },

 

05 模型训练、测试

5.1 模型训练

准备工作都做好了,训练代码非常简洁,下面就是全部的代码

import os
import argparse
import logging
logging.basicConfig(level=logging.DEBUG)
from common import find_mxnet
from common import data, fit
import mxnet as mx

import os, urllib

if __name__ == "__main__":
   parser = argparse.ArgumentParser(description="simple conv3 net",
                                    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
   train = fit.add_fit_args(parser)
   data.add_data_args(parser)
   aug = data.add_data_aug_args(parser)
   data.set_data_aug_level(parser, 1)
   parser.set_defaults(image_shape='3,48,48', num_epochs=200,
                       lr=.001, wd=0)
   args = parser.parse_args()

   # define simpleconv3
   net = mx.sym.load('models/simple-conv3-symbol.json')
   print "net",net

   # train
   fit.fit(args        = args,
           network     = net,
           data_loader = data.get_rec_iter)

其中调用了fit接口定义优化目标和策略,我们只分析其中的核心代码,首先是模型创建

   model = mx.mod.Module(
       context       = devs,
       symbol        = network
   )

然后是optimizer配置,默认使用adam

   optimizer_params = {
           'learning_rate': lr,
           'wd' : args.wd

   }

初始化

   initializer = mx.init.Xavier(rnd_type='gaussian', factor_type="in", magnitude=2.34)

最后是完整的接口

   model.fit(train,
       begin_epoch        = args.load_epoch if args.load_epoch else 0,
       num_epoch          = args.num_epochs,
       eval_data          = val,
       eval_metric        = eval_metrics,
       kvstore            = kv,
       optimizer          = args.optimizer,
       optimizer_params   = optimizer_params,
       initializer        = initializer,
       arg_params         = arg_params,
       aux_params         = aux_params,
       batch_end_callback = batch_end_callbacks,
       epoch_end_callback = checkpoint,
       allow_missing      = True,
       monitor            = monitor)

然后开始愉快的训练吧

python train.py --gpus 0 \
   --data-train data/train.txt \
   --model-prefix 'models/simple-conv3' \
   --batch-size 80 --num-classes 2 --num-examples 900 2>&1 | tee log.txt

训练模型会存为simple-conv3-epoch.params的格式。

5.2 训练过程可视化

由于前面我们的tensorflow,pytorch,keras都使用了tensorborad进行可视化,mxnet也可以借助tensorboard进行可视化,只需要再设计一些mxnet接口即可。具体方法不再赘述,参考https://github.com/awslabs/mxboard

网络结构的可视化则可用mx.viz.plot_network(sym).view()。

5.3 模型测试

使用mx.model.load_checkpoint载入预训练的模型,如下

epoch = int(sys.argv[1]) #check point step
gpu_id = int(sys.argv[2]) #GPU ID for infer
prefix = sys.argv[3]
ctx = mx.gpu(gpu_id)
sym, arg_params, aux_params = mx.model.load_checkpoint(prefix, epoch)
arg_params, aux_params = ch_dev(arg_params, aux_params, ctx)

然后使用bind接口进行forward,具体操作如下

sym  = mx.symbol.SoftmaxOutput(data = sym, name = 'softmax')       

img_full_name = os.path.join(imgdir,imgname)
img = cv2.cvtColor(cv2.imread(img_full_name), cv2.COLOR_BGR2RGB)
img = np.float32(img)
rows, cols = img.shape[:2]
resize_width = 48
resize_height = 48
img = cv2.resize(img, (resize_width, resize_height), interpolation=cv2.INTER_CUBIC)
h, w, _ = img.shape

img_crop = img[0:h,0:w] ##此处使用整图
img_crop = np.swapaxes(img_crop, 0, 2)
img_crop = np.swapaxes(img_crop, 1, 2)  # mxnet的训练是rgb的顺序输入,所以需要调整为r,g,b训练
img_crop = img_crop[np.newaxis, :]

arg_params["data"] = mx.nd.array(img_crop, ctx)
arg_params["softmax_label"] = mx.nd.empty((1,), ctx)
exe = sym.bind(ctx, arg_params ,args_grad=None, grad_req="null", aux_states=aux_params)
exe.forward(is_train=False)
probs = exe.outputs[0].asnumpy()

 

06 总结

好了,就这么多。到今天为止,主流的机器学习框架caffe,tensorflow,pytorch,paddlepaddle,keras,mxnet我们已经全部给大家提供了快速入门【文末提供了全部链接】。从自定义数据集,自定义网络,到模型的训练,可视化,测试,全套脚本都提供到了github上,欢迎star和fork。

 

同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流

https://zhuanlan.zhihu.com/c_151876233

注:部分图片来自网络

本系列完整文章:

第一篇:【caffe速成】caffe图像分类从模型自定义到测试

第二篇:【tensorflow速成】Tensorflow图像分类从模型自定义到测试

第三篇:【pytorch速成】Pytorch图像分类从模型自定义到测试

第四篇:【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

第五篇:【Keras速成】Keras图像分类从模型自定义到测试

第六篇:【mxnet速成】mxnet图像分类从模型自定义到测试

第七篇:【cntk速成】cntk图像分类从模型自定义到测试

第八篇:【chainer速成】chainer图像分类从模型自定义到测试

第九篇:【DL4J速成】Deeplearning4j图像分类从模型自定义到测试

第十篇:【MatConvnet速成】MatConvnet图像分类从模型自定义到测试

第十一篇:【Lasagne速成】Lasagne/Theano图像分类从模型自定义到测试

第十二篇:【darknet速成】Darknet图像分类从模型自定义到测试

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!

 

 

 

mxnet实战笔记(1) - 使用自己的图片数据训练CNN模型 将自己的图片数据集导入mxnet训练一个cnn模型。 阅读详情

相关推荐

MXNet 中文教程:图像分类

本人对于 MXNet 官方文档的翻译页面: https://github.com/ironyoung/mxnet/blob/master/docs/tutorials/computer_vision/image_classification.md图像分类这个教程中,我们将标签分配给某张图片,同时得到标签符合程度的评分高低。下列图片 (source) 展示了一个例子:https://raw.gith

IronYoung_不惧未来 6184

Mxnet生成模型结构图

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34205826的博客 742

mxnet构建的图和生成的图不一致,mxnet可视化模型结构

坑爹的同事的代码 逻辑混乱 mxnet在最后生成计算图的时候,会自动修剪掉那些最后没有用到其输出的分支,即使你之前已经构建过了。 所以你会发现一个神奇的事情: 你明明构建了那部分计算图 最后可视化和get_symbol的时候却没有!!!! ...

Hello Word! 467

mxnet 图像分类模型训练教程

mxnet 图像识别教程 这里以 TinyMind 《汉字书法识别》比赛数据为例,展示使用 mxnet 进行图像数据分类模型训练的整个流程。 数据地址请参考: https://www.tinymind.cn/competitions/41#property_23 或到这里下载: 自由练习赛数据下载地址: 训练集:链接: https://pan.baidu.com/s/1UxvN7nVpa0cuY1...

dwSun的博客 1935

mxnet学习(一)----利用自己的数据集图像分类

这段时间小编参加了一个叫prcv的挑战赛,其中就有一个项目是多标签图像分类,可是小编一直使用的是caffe框架,这给这个任务带来了比较大的挑战,据说可以通过修改caffe源码来实现多标签分类问题,但是我觉得太麻烦了,也不想去修改我的caffe源码,毕竟caffe也不太好安装,tensorflow,keas等框架小编半生不熟,经过搜索,打听到mxnet比较适合解决这个问题,于是小编开始摸索mxnet...

xiao__run的博客 6443

Glue)《Multi-omics single-cell data integration and regulatory inference with graph-linked embedding》

论文引入GLUE框架,通过知识引导图(guidance graph)显式建模跨层调控交互,桥接特征空间,实现准确、鲁棒、可扩展的整合。近年来,单细胞测序技术(如scATAC-seq用于染色质可及性、snmC-seq用于DNA甲基化、scRNA-seq用于转录组)允许同时探测多个组学层,揭示细胞异质性和调控机制。GLUE优于现有方法:桥接特征空间,避免信息丢失,支持多组学和调控推断。用于整合未配对的单细胞多组学数据(如scRNA-seq、scATAC-seq和snmC-seq),并同时进行调控交互推断。

m0_58293236的博客 1152

MXNet学习笔记——0 MXNet概念、数据、模型初建

写在前面 本系列博客记录了作者上手MXNet的全过程。作者在接触MXNet之前主要使用keras,和一点tensorflow,因此在上手MXNet之前有一点deep learning的项目基础。主要参考资料为MXNet官方教程,也阅读了一些有价值的博客。 博客结构为:先列出作者对于该阶段的期望目标,以及各目标完成过程中的笔记(仅记下个人认为重要的),再附上学习过程中自己的提问(solved &...

s000da的博客 686

手把手教你用Python实现ITRS与GCRS坐标转换(附完整代码)

本文详细介绍了如何使用Python的Astropy库实现ITRS与GCRS坐标转换。文章从环境配置、坐标对象构建入手,深入解析了transform_to方法背后的转换矩阵与地球定向参数管理,并通过卫星地面轨迹计算实战案例,帮助开发者掌握高精度空间坐标转换的核心技术与工程实践。

weixin_28335283的博客 82

深度学习与计算机视觉 实践学习(4)最简单的图片分类——手写数字识别(基于MXNet)

1. 制作Image Recordio数据 2.用Module模块训练LeNet-5

Fan0920的专栏 835

MOSFET热失效机理与保护电路设计:实战案例

深入解析MOSFET工作原理及其在高温下的失效机制,结合实际案例探讨有效保护电路设计,提升系统可靠性与安全性。

weixin_28713083的博客 852

实战复盘:如何用ATE(自动测试设备)搞定一颗MCU的功能测试全流程

本文详细解析了如何利用ATE(自动测试设备)完成MCU功能测试的全流程,涵盖测试需求分析、测试向量生成、ATE测试程序开发及调试实战。通过真实案例分享,帮助工程师高效解决芯片测试中的常见问题,提升Functional Test的准确性和效率。

weixin_30872157的博客 487

安装mxnet 镜像_【mxnet速成】mxnet图像分类从模型自定义到测试

这一次我们讲讲mxnet,相关的代码、数据都在我们 Git 上,希望大家 Follow 一下这个 Git 项目,后面会持续更新不同框架下的任务。https://github.com/longpeng2008/LongPeng_ML_Course 01 mxnet是什么mxnet是amazon的官方框架,下面参考mxnet的官方简介https://mxnet-bing.readthedocs.io/...

weixin_30877689的博客 345

基于SOEM的伺服电机控制实战:从配置到调试

本文详细介绍了基于SOEM的伺服电机控制实战,从硬件配置到软件调试的全过程。通过分享PDO映射、状态机控制、性能优化等核心技巧,帮助开发者快速掌握EtherCAT通信与伺服电机控制的关键技术,提升工控系统开发效率。

weixin_29165465的博客 522

【github干货】主流深度学习开源框架从入门到熟练

文章首发于微信公众号《有三AI》 【github干货】主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,tiny-dnn,deeplearning4j...

hacker_long的专栏 1511

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042

[ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042 Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。

qq_51577576的博客 3229

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1069

【好专栏】深度学习框架不会用?12大主流深度学习框架快速入门,你值得拥有!...

欢迎来到【好专栏】,本次我们给大家推荐一个专栏,名为《12 大深度学习开源框架快速入门》,这个专栏为介绍了深度学习的 12 大主流框架,附带实践案例,能够让读者快速掌握深度学习框架的使用...

Leong Blog 516

UG二次开发之 三面摆正体代码分析

CIUGUIBlock 是一个从UIBlock 派生的一个类,为什么要从UIBlock 派生出CIUGUIBlock,这是为了兼容低版的UG。如果我们不从的UIBlock 派生控件类对象指针,在UG 8.5以下的版本,会出现编译错误的问题。这是一个简单的入门功能,包括了不少的常用的UF函,下面我们将结合成品代码一起分析一下常用的函数,这对初学者是必要的。根据创建好的UI控件,在 initialize_cb 中创建控件的指针对象。//根据选定的面,指定 X,Y坐标系轴。//根据变换的矩阵,平移实体。

u014657217的博客 352

12大深度学习开源框架

主流的深度学习框架: caffe, tensorflow, pytorch/caffe2, keras。 mxnet, paddlepaddle, theano?,cntk。 此外,基本所有的框架都支持CUDA 框架的使用场景:关于框架的选择,首先必须要学会tensorflow/pytorch,这两个框架是开发者用的最多,最丰富的 移动端算法 使用Caffe 掌握开源框架的步骤: 1 掌握数据的准备和使用 2 掌握模型的定义 3 掌握训练过程、数据可视化 4 掌握训练方法 测试方法 caffe: te

weixin_40405152的博客 599

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【杂谈】面向新手的深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

之前我们公众号输出了很多深度学习开源框架相关的内容,现在整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的...

hacker_long的专栏 495

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的...

hacker_long的专栏 698

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MXNet-图像分类(symbol版本)【附源码】

本文基于mxnet的symbol实现图像分类,本文基于多个网络结构实现图像分类

ctu_sue的博客 867

Mxnet图片分类(4)利用训练好的模型进行测试

利用训练好的模型测试只需要把模型和数据准备好。系统: ubuntu14.04 Mxnet: 0.9041.模型和数据准备2.模型加载测试import mxnet as mx sym,arg_params,aux_params = mx.model.load_checkpoint('vggnew',40) mod = mx.mod.Module(symbol=sym,context=mx.gpu()

yiweibian的博客 6051

mxnet用于图像分类tool

mxnet是一个相对简洁的框架,下面我们将介绍如何用mxnet来实现图像分类。其实关于图像分类的博文有很多了,这一篇算是自己的一个记录吧,以防以后会再用到,可以方便的捡起来:) 我自己构建了一个mxnet的分类toolkit,可以方便的进行数据集的建立,几乎支持一键训练。 可以直接clone代码进行玩耍 https://github.com/610265158/My_Mxnet_toolki...

小羊苏西的博客 1607

Mxnet图片分类(1)准备数据集

Mxnet做图片分类训练的时候提供了多种输入,这里介绍.rec数据的制作。mxnet版本:9.041.收集图片这里收集了两类图片,猫和狗的图片。 第一类 第二类所有的图片放到两个文件夹中 2.生成mxnet训练需要的数据格式如果mxnet自带的im2rec.py有问题,这里用的是另外的文件,文件名叫im2rec2.py,代码在最后面。#生成.lst文件 python im2rec2.py

yiweibian的博客 4277

MXNet官方文档中文版教程(9):大规模图像分类

文档英文原版参见Large Scale Image Classification 训练大规模图像的神经网络具有很多挑战。即使使用最新的GPU,也不可能使用单个GPU在合理的时间内使用大量图像来训练大型网络。通过在单个机器中使用多个GPU可以稍微缓解这个问题。但是,可以连接到一台机器(通常为8或16个)的GPU数量是有限制的。本教程介绍了如何使用多台机器(每个包含多个GPU)来训练具有TB级数据的大型

青青韶华 5326
上一篇: 【Keras速成】Keras图像分类从模型自定义到测试
下一篇: 【技术综述】一文道尽softmax loss及其变种
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值