python中mxnet_mxnet Python 笔记
1、查看mxnet的版本
import mxnet as mx
mx.__version__
2、扩展nd的维度
image_data = mx.random.normal(shape = (3, 112, 112))
image_data.expand_dims(axis = 0)
3、装载网络结构
import mxnet as mx
train_net = mx.gluon.model_zoo.get_model("ResNet34_V1",pretrianed = False)
4、修改预装载的网络结构
from mxnet.gluon import nn
train_net = ....(参考3)
conv_0 = nn.Conv2d(channels = 64, kernel_size = (3, 3), strides =(1,1), padding = (1, 1), use_bais = False)
conv_0.collect_params().initialize(mx.init.Xavier())
train_net.features.register_child(conv_0, "0")
train_net.features.hybridize()
5、画出网络结构
x =mx.sym.var('data')
mx.viz.plot_network(train_net(x), shape = {'data':(1, 3, 112, 112)} ).view()
6、上下文
num_gpus = 0
ctx = [mx.gpu(i) for i in range(num_gpus) ] if num_gpus > 0 else [mx.cpu(0)]
train_net = mx.gluon.model_zoo.get_model("ResNet34_V1",pretrianed = False,ctx = ctx)
conv_0.collect_params().initialize(mx.init.Xavier(),ctx = ctx)
train_net.collect_params().initialize(mx.init.Xavier(), ctx = ctx )
7、读图片文件,并展示
image = mx.image.imread(filename)
plt.imshow(image.asnumpy())
8、获取GPU个数
num_gpus = mx.context.num_gpus()
9、获取模型,并初始化
finetune_net = resnet50_v2(pretrained=True, ctx=ctx)
# change last softmax layer since number of classes are different
with finetune_net.name_scope():
finetune_net.output = nn.Dense(classes)
finetune_net.output.initialize(init.Xavier(), ctx=ctx)
# hybridize for better performance
finetune_net.hybridize()
10 主要的类图关系如下图
11、官方例子
12、例子
13、读数据
image_channels = 3
image_height = 112
image_width = 96
path_root=r'E:\samplebase'
path_imglist=r'E:\samplebase\1_10000_1.lst'
train_dataiter = mx.image.ImageIter(batch_size= batch_size,
data_shape= (image_channels, image_height, image_width),
path_root = path_root,
path_imglist = path_imglist,
shuffle = True,
rand_mirror = True,
#rand_resize = True,
#resize = 96,
rand_crop = True,
# brightness = 0.1,
# contrast = 0.1,
# saturation = 0.1,
pca_noise = 0.1)
train_dataiter.reset()
image_batch = train_dataiter.next()
for i in range(batch_size):
plt.subplot(1, 4, i + 1)
plt.imshow(image_batch.data[0][i].asnumpy().astype('uint8').transpose((1,2,0)))
plt.show()
14 训练最后一层(FC7)
15 多迭代器https://github.com/khetan2/MBEM/blob/master/resnet.py#L131github.com
16 预测
17 图片左右翻转
18 读取文件夹下的jpg文件
19 定义人脸关键点可视化函数
for _, w in b_net.collect_params().items():
w.grad_req = 'null'
21 mxnet支持累积gradient的。
由于batch_size太小了,所以想实现caffe中iter_size这样一个功能,就是处理iter_size * batch_size个样本以后在更新网络参数。由于对loss.backward()和trainer.step这两个函数的底层是如何实现的不太清楚,所以想请教一下
22 迁移学习
迁移学习有两种,微调(fine-tuning)和冻结(freezing)。
前者会对预训练层也进行权重更新,这时候需要设置两个学习率,较小的用于对预训练层进行更新,较大的用于对分类层进行更新;
后者保持预训练层的权重不变,只训练分类层。通常在自己的数据集不大的时候,用 freezing,如果自己的数据集足够大且自己的数据集与预训练数据集有较大差异时,用 fine-tuning。
通常 fine-tuning 的效果优于freezing,不过 freezing 可以快速得到一个不错的结果,主要适合小数据集且数据集差异不大的情况。
在建立模型的时候,注意看 API 里的参数,比如 pretrained=True 这样的。
model.collect_params()['conv1_weight'].set_data(mx.nd.array([...]))
我有4个识别任务,现在希望用一个带有多个输出的网络实现。类似于multi-task,区别是我希望每次只训练一个任务,也就是说一个输入对应一个输出。共享层会被4个不同的任务更新,输出层的参数则只被对应的单一任务更新。
可以,你把4个loss加起来,一起训练就行了。你可以用4个独立的输出层。四个loss一起backward
autograd.backward([loss1, loss2, …])
和直接加是等价的
26: >>> nd_iter = mx.io.NDArrayIter(data={'data':mx.nd.ones((100,10))},
... label={'softmax_label':mx.nd.ones((100,))},
... batch_size=25)
27:
28 例子:
29:convert Pytorch pretrain model to MXNET symbol modelPyTorch to ONNX to MXNet Tutorialdocs.aws.amazon.com
30 安装mxnet
pip install mxnet-cu90mkl --pre --upgrade
pip install gluoncv --pre --upgrade
python中mxnet_mxnet Python 笔记相关推荐
- python中lastch_python复习笔记
#python复习笔记 ##基础 1.下划线(_)在解释器中有特别的含义,表示最后一个表达式的值. Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Micr ...
- python中head_python学习笔记[headfirst]
1内置函数 (BIF) python中有很多内置函数,再遇到一个需求时候,优先考虑内置函数.内置函数使用的时候不需要导入命名空间 range():生成一个从0到某个数的数字列表 2从文件读取数据 2. ...
- 在python中安装python库
1.安装numpy库 win+R -> cmd ->where python(有种情况是输入where python之后,出现" 'where不是内部或外部命令,也不是可运行的 ...
- python中年月日,python日期和时间
今天是第17天,在Python中通常用时间戳,时间字符串和元组三种方式表示,今天学习的是time和datetime常用时间和日期函数的用法 一.日期和时间的处理 1,时间戳 指1970年1月1日0时0 ...
- python中变量,Python中的变量、数据类型、运算符
Python第四课 Python中的变量.数据类型.运算符 Hello,小伙伴们,今天我们来聊一聊Python里面的变量.数据类型.运算符. 一. 变量:什么是变量呢? 我们来看这样一个例子:李四在银 ...
- python中fig_matplotlib python:fig.figimage和fig.savefig的图形大小
我正在尝试将png图像添加到在 python中使用matplotlib创建的绘图中. 这是我的情节代码 import matplotlib as mpl mpl.use('Agg') import m ...
- python中变量,python中变量的概念
python中变量的概念 在python中,变量就是一种标识符, 它是数据的名字,更专业的理解,变量是内存中数据的引用, 编程语言里的变量和初中学习代数时的方程变量很相似. 前面学习数字类型,bool ...
- python中isleap_Python学习笔记(十三)系统
使用计算机时,经常需要列出一个文件夹或者目录的内容,创建和删除文件等操作,在 Python 程序中可以做到同样的事, 甚至能做更多的事.Python 在模块 os(操作系统,operating sys ...
- python中的pylab_python笔记18(Pylab笔记1)
由于公开课视频太模糊,准备先跟着课件过一遍. 例1: import pylab pylab.figure(1) pylab.plot([1,2,3,4],[5,6,7,8]) pylab.show() ...
最新文章
- html编写个人博客_Django 开发简易博客网站
- Java常用类之【字符串相关类型】
- 黑马程序员——java基础---多线程(二)
- mysql数据库的快捷键
- 2.11 矩阵和实数运算不同之处
- 启动“powershell.exe”时出现错误 0x8007000
- 网页设计趋势:模糊背景在网站中的经典应用案例
- jvm感知docker容器参数
- 自学html和css,学习HTML和CSS的5大理由
- 软件生命周期管理研讨会有感
- 安卓案例:Volley用法演示
- Rust:Fn,FnMut,FnOnce
- 谷粒学院-第二天笔记
- Android签名文件转化为pk8和pem
- 宽度优先算法求解八数码问题
- 铃木敏文《零售的哲学》品读之对产品经理和程序员的现实意义 下篇
- android 拨打电话 发送短信 权限,Android中发送短信和拨打电话
- linux返回上级目录
- 服务器的日常维护需要做什么?
- 用了三年teambition的我,为什么改用飞项了?