记intel杯比赛中各种bug与debug【其三】:intel chainer的安装与使用
现在在训练模型,闲着来写一篇
顺着这篇文章,顺利安装上intel chainer
再次感谢 大黄老鼠
intel chainer 使用
头一次使用chainer,本以为又入了一个大坑,实际尝试感觉非常兴奋
chainer的使用十分顺畅,开发起来特别友好
可能是跟pytorch相似的原因,特喜欢chainer

网络结构编写
这里如果用过pytorch,就会发现代码几乎没变,写起来就会非常顺手
在chainer中layers被视为links,Module被叫做Chain, chainer的意思由此可见
chainer的创新是突出了一个数据带领结构(“Define-by-Run”),所以就连layer的输入大小都不需要填写
模型会自动帮我们写
class Network(chainer.Chain):
def __init__(self):
super(Network, self).__init__()
with self.init__scope():
self.in=chainer.links.Linear(None, 256)
self.hidden=chainer.links.Linear(None, 64)
self.out=chainer.links.Linear(None, 5)
def __call__(self, x):
x=chainer.functions.relu(self.in(x))
x=chainer.functions.relu(self.hidden(x))
x=self.out(x)
return x
class Classifier(chainer.Chainer):
def __init__(self, predicor):
super(Classifier, self).__init__()
with self.init__scope():
self.predictor=predictor
def __call__(self, x, t):
x=self.predictor(x)
loss=chainer.functions.softmax_cross_entropy(x, t)
accuracy=chainer.functions.accuracy(x, t)
chainer.reporter.report({'loss': loss, 'accuracy': accuracy}, self)
return loss
训练模型
简要写一下chainer训练时要写什么
- model
- optimizer
- trainer(可选,需要updater和必要的参数)
- updater(以下皆可选, 需iterator, optimizer)
- iterator(需dataset,batch_size)
- dataset(类型为TupleDataset)
- extensions(需trainer)
我们把训练方式分为两种
- 一种为pytorch风格
定义好model, optimizer, criterion
嵌套循环,计算loss然后bp即可
def lossfun(data, label):
...
return loss
model=Network()
optimizer=chainer.optimizers.Adam()
optimizer.setup(model)
for epoch in params['epoch']:
for step, batch in enumerate(dataset):
model.cleargrads()
# model.reset_state()
loss=lossfun(batch['data'], batch['label'])
loss.backward()
optimizer.update()
或者简单写成
model=Network()
optimizer=chainer.optimizers.Adam()
optimizer.setup(model)
for epoch in params['epoch']:
for step, batch in enumerate(dataset):
# model.reset_state()
optimizer.update(lossfun, data, label)
- 另一种是带trainer的chainer风格
若有需要,重写updater和iterator,塞进trainer即可
若需要拓展,只需trainer.extend(...),十分方便
这里就简单的写一下
model=Classifier(Network())
optimizer=chainer.optimizers.Adam()
optimizer.setup(model)
trainset=chainer.datasets.TupleDataset(data, label)
train_iter=chainer.iterators.SerialIterator(trainset, params['batch_size'], shuffle=True, repeat=True)
updater=trainer.StandardUpdater(train_iter, model)
trainer=chainer.training.Trainer(updater, (params['epoch'], 'epoch'), params['name'])
# 这里是各种拓展
trainer.run()
使用模型
跟pytorch一样,十分简单
predict=model(data)
...
记intel杯比赛中各种bug与debug【其三】:intel chainer的安装与使用的更多相关文章
- 记intel杯比赛中各种bug与debug【其一】:安装intel caffe
因为intel杯创新软件比赛过程中,并没有任何记录.现在用一点时间把全过程重演一次用作记录. 学习 pytorch 一段时间后,intel比赛突然不让用 pytoch 了,于是打算转战intel ca ...
- 记intel杯比赛中各种bug与debug【其二】:intel caffe的使用和大坑
放弃使用pytorch,学习caffe 本文仅记录个人观点,不免存在许多错误 Caffe 学习 caffe模型生成需要如下步骤 编写network.prototxt 编写solver.prototxt ...
- 记intel杯比赛中各种bug与debug【其四】:基于长短时记忆神经网络的中文分词的实现
(标题长一点就能让外行人感觉到高大上) 直接切入主题好了,这个比赛还必须一个神经网络才可以 所以我们结合主题,打算写一个神经网络的中文分词 这里主要写一下数据的收集和处理,网络的设计,代码的编写和模型 ...
- 记intel杯比赛中各种bug与debug【其五】:朴素贝叶斯分类器的实现和针对性的优化
咱这个项目最主要的就是这个了 贝叶斯分类器用于做可以统计概率的二元分类 典型的例子就是垃圾邮件过滤 理论基础 对于贝叶斯算法,这里附上两个链接,便于理解: 朴素贝叶斯分类器的应用-阮一峰的网络日志 基 ...
- SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理
原文:SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理 SQL Server 字段类型 decimal(18,6)小数点前是几位? 不可否认,这是 ...
- gcc中的内嵌汇编语言(Intel i386平台)
[转]http://bbs.chinaunix.net/thread-2149855-1-1.html 一.声明 虽然Linux的核心代码大部分是用C语言编写的,但是不可避免的其中还是有一部分是用汇 ...
- 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过?
HTML5学堂 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过? IE6已经渐渐的开始退出浏览器的历史舞台.虽然当年IE6作为微软的一款利器击败网景,但之后也因为版本的持续不更新而被火狐和谷歌三 ...
- 转:移动开发中一些bug及解决方案
网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...
- 写代码的心得,怎么减少编程中的 bug?
遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了 ...
随机推荐
- Cocos结构
基类:CApplicationProtocol 纯虚函数virtual bool applicationDidFinishLaunching() = 0; CCApplication继承于CCAppl ...
- 中文版 ImageNet Classification with Deep Convolutional Neural Networks
ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC ...
- (转载)Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- (转载)自定义ExpandableListView,实现二级列表效果
先看效果图: 上图是我们要实现的效果,那么现在我们开始着手去做,主要分为以下几步: 一丶我们需要根据效果图去思考该如何动手,从上图分析看,我们可以用一个相对布局RelativeLayout来完成gro ...
- hdu5321 beautiful set(莫比乌斯反演)
设\(cnt[i]\)为权值为i的倍数的数的数量. \(f0[i],f1[i]\)分别为两种方法\(gcd=i\)的贡献是i的多少倍. \(F0[i],F1[i]\)分别为两种方法\(gcd\)为\( ...
- linux 连接 NAS
[root@kvm-server ~]# mount -o username=user01,password=1234567890 //192.168.31.20/share /mnt/nas Cou ...
- Laravel关联模型中过滤结果为空的结果集(has和with区别)
首先看代码: $userCoupons = UserCoupons::with(['coupon' => function($query) use($groupId){ return $quer ...
- 【codeforces 466D】Increase Sequence
[题目链接]:http://codeforces.com/problemset/problem/466/D [题意] 给你n个数字; 让你选择若干个区间; 且这些区间[li,ri]; 左端点不能一样; ...
- ZOJ 2702 Unrhymable Rhymes
Unrhymable Rhymes Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu De ...
- 在 Win8.1 上安装 Dedup
install-package Microsoft-Windows-ServerCore-FullServer-Package~31bf3856ad364e35~amd64~~6.3.9600.163 ...