现在在训练模型,闲着来写一篇

顺着这篇文章,顺利安装上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的安装与使用的更多相关文章

  1. 记intel杯比赛中各种bug与debug【其一】:安装intel caffe

    因为intel杯创新软件比赛过程中,并没有任何记录.现在用一点时间把全过程重演一次用作记录. 学习 pytorch 一段时间后,intel比赛突然不让用 pytoch 了,于是打算转战intel ca ...

  2. 记intel杯比赛中各种bug与debug【其二】:intel caffe的使用和大坑

    放弃使用pytorch,学习caffe 本文仅记录个人观点,不免存在许多错误 Caffe 学习 caffe模型生成需要如下步骤 编写network.prototxt 编写solver.prototxt ...

  3. 记intel杯比赛中各种bug与debug【其四】:基于长短时记忆神经网络的中文分词的实现

    (标题长一点就能让外行人感觉到高大上) 直接切入主题好了,这个比赛还必须一个神经网络才可以 所以我们结合主题,打算写一个神经网络的中文分词 这里主要写一下数据的收集和处理,网络的设计,代码的编写和模型 ...

  4. 记intel杯比赛中各种bug与debug【其五】:朴素贝叶斯分类器的实现和针对性的优化

    咱这个项目最主要的就是这个了 贝叶斯分类器用于做可以统计概率的二元分类 典型的例子就是垃圾邮件过滤 理论基础 对于贝叶斯算法,这里附上两个链接,便于理解: 朴素贝叶斯分类器的应用-阮一峰的网络日志 基 ...

  5. SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理

    原文:SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理 SQL Server 字段类型 decimal(18,6)小数点前是几位? 不可否认,这是 ...

  6. gcc中的内嵌汇编语言(Intel i386平台)

    [转]http://bbs.chinaunix.net/thread-2149855-1-1.html 一.声明  虽然Linux的核心代码大部分是用C语言编写的,但是不可避免的其中还是有一部分是用汇 ...

  7. 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过?

    HTML5学堂 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过? IE6已经渐渐的开始退出浏览器的历史舞台.虽然当年IE6作为微软的一款利器击败网景,但之后也因为版本的持续不更新而被火狐和谷歌三 ...

  8. 转:移动开发中一些bug及解决方案

    网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...

  9. 写代码的心得,怎么减少编程中的 bug?

    遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了 ...

随机推荐

  1. [JZOJ5166] [NOIP2017模拟6.26卢学魔] 解题报告 (记忆化搜索|拓扑排序)

    题目链接: http://172.16.0.132/senior/#main/show/5166 题目: 题解: 这个没什么好讲的,就是注意生产者没人吃也不是食物链,这告诉我们要积累生物知识注意细节 ...

  2. POJ 1949 DP?

    题意: 有n个家务,第i个家务需要一定时间来完成,并且第i个任务必须在它 "前面的" 某些任务完成之后才能开始. 给你任务信息,问你最短需要多少时间来完成任务. 输入: 第一行n个 ...

  3. 移动端 input 获取焦点后弹出带enter(类似于搜索,确定,前往)键盘,以及隐藏系统键盘

    一:调出系统带回车键的键盘 在项目中经常有输入框,当输入完成后点击确定执行相应的动作.但是有些设计没有确定或者搜索按钮,这就需要调用系统键盘,点击系统键盘的确定后执行相应动作. 但是单纯的input是 ...

  4. KafkaZookeeper2-ZookeeperClient

    介绍 ZookeeperClient 是 kafka 新写的客户端,它允许用户流水线式(并行)访问 zookeeper. 为什么放弃了 zkClient? zkClient 是一个第三方的客户端. 它 ...

  5. Windows服务的创建,安装,卸载

    我公司项目的产线系统要与WMS物流系统做借口对接,需要我创建一个windows服务的项目,里面含有7个服务 创建Windows服务: 1.如图:点击 windows->经典桌面->wind ...

  6. Intellij IDEA安装与使用,完整详细。

    https://blog.csdn.net/qq_41879385/article/details/81952656 https://www.jetbrains.com/idea/download/# ...

  7. 获取鼠标经过处的标签的标签名和id

    <script> var el = window.document.body; // 声明一个变量,默认值为body window.document.body.onmouseover = ...

  8. ajax同时提交表单且包含文件

    说明一下:FormData对象是html5的一个对象,目前的一些主流的浏览器都已经兼容.ie8暂时不支持,不支持FormData的,可以使用方法二,下面会介绍.接着说FormData,它是一个html ...

  9. UVA-1331 Minimax Triangulation 区间dp 计算几何 三角剖分 最大三角形最小化

    题目链接:https://cn.vjudge.net/problem/UVA-1331 题意 给一个任意多边形,把它分为多个三角形. 求某方案中最大的三角形是各方案中最小的面积的三角形面积. 思路 学 ...

  10. luogu P2252 取石子游戏(威佐夫博弈)

    题意 题解 对于像我这种不知道威佐夫博弈的人来说,拿到题就开始打表了. 然而打完后并没有发现什么. 然后才知道是威佐夫博弈. 结论是当(int)((b-a)*((sqrt(5.0)+1.0)/2.0) ...