Chainer的初步学习
人们都说Chainer是一块非常灵活you要用的框架,今天接着项目里面的应用,初步接触一下,涨涨姿势,直接上源码吧,看着好理解。其实跟Tensorflow等其他框架都是一个套路,个人感觉更简洁了。
- """
- 测试使用
- """
- import pickle
- import time
- import numpy as np
- import matplotlib.pyplot as plt
- from chainer import Chain, Variable, optimizers, serializers
- import chainer.functions as F
- import chainer.links as L
- # 创建Chainer Variables变]量
- a = Variable(np.array([3], dtype=np.float32))
- b = Variable(np.array([4], dtype=np.float32))
- c = a**2 +b**2
- # 5通过data属性检查之前定义的变量
- print('a.data:{0}, b.data{1}, c.data{2}'.format(a.data, b.data, c.data))
- # 使用backward()方法,对变量c进行反向传播.对c进行求导
- c.backward()
- # 通过在变量中存储的grad属性,检查其导数
- print('dc/da = {0}, dc/db={1}, dc/dc={2}'.format(a.grad, b.grad, c.grad))
- # 在chainer中做线性回归
- x = 30*np.random.rand(1000).astype(np.float32)
- y = 7*x + 10
- y += 10*np.random.randn(1000).astype(np.float32)
- plt.scatter(x, y)
- plt.xlabel('x')
- plt.ylabel('y')
- plt.show()
- # 使用chainer做线性回归
- # 从一个变量到另一个变量建立一个线性连接
- linear_function = L.Linear(1, 1)
- # 设置x和y作为chainer变量,以确保能够变形到特定形态
- x_var = Variable(x.reshape(1000, -1))
- y_var = Variable(y.reshape(1000, -1))
- # 建立优化器
- optimizer = optimizers.MomentumSGD(lr=0.001)
- optimizer.setup(linear_function)
- # 定义一个前向传播函数,数据作为输入,线性函数作为输出
- def linear_forward(data):
- return linear_function(data)
- # 定义一个训练函数,给定输入数据,目标数据,迭代数
- def linear_train(train_data, train_traget, n_epochs=200):
- for _ in range(n_epochs):
- # 得到前向传播结果
- output = linear_forward(train_data)
- # 计算训练目标数据和实际标数据的损失
- loss = F.mean_squared_error(train_traget, output)
- # 在更新之前将梯度取零,线性函数和梯度有非常密切的关系
- # linear_function.zerograds()
- linear_function.cleargrads()
- # 计算并更新所有梯度
- loss.backward()
- # 优化器更新
- optimizer.update()
- # 绘制训练结果
- plt.scatter(x, y, alpha=0.5)
- for i in range(150):
- # 训练
- linear_train(x_var, y_var, n_epochs=5)
- # 预测值
- y_pred = linear_forward(x_var).data
- plt.plot(x, y_pred, color=plt.cm.cool(i / 150.), alpha=0.4, lw=3)
- slope = linear_function.W.data[0, 0] # linear_function是之前定义的连接,线性连接有两个参数W和b,此种形式可以获取训练后参数的值,slope是斜率的意思
- intercept = linear_function.b.data[0] # intercept是截距的意思
- plt.title("Final Line: {0:.3}x + {1:.3}".format(slope, intercept))
- plt.xlabel('x')
- plt.ylabel('y')
- plt.show()
Chainer的初步学习的更多相关文章
- json2.js的初步学习与了解
json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...
- 老周的ABP框架系列教程 -》 一、框架理论初步学习
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...
- EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库
前提:搭建成功codefirst相关代码,参见EF Codefirst 初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...
- 初步学习python
自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- 语法分析器初步学习——LISP语法分析
语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...
- 状态保持以及AJAX的初步学习
嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...
- LinQ的初步学习与总结
嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单 ...
随机推荐
- 开发还是应该使用linux
这几天在Windows系统下,安装了几个IDE,体量大,4.5个G,启动速度慢,占用系统资源多,并且最难受的是,这些IDE的限制性太强,只能按照UI给定的规则来操作,例如现在手中有一个已完成的项目,用 ...
- C语言对文件的基本操作
在C语言中,对于文件的操作是利用FILE结构体进行的. 几个常用的操作文件函数简介 1:打开文件 FILE *fopen( const char *filename, const char *mode ...
- Jsoup(三)-- Jsoup使用选择器语法查找DOM元素
1.Jsoup可以使用类似于CSS或jQuery的语法来查找和操作元素. 2.实例如下: public static void main(String[] args) throws Exception ...
- Unity弹出MessageBox
[DllImport("User32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = Char ...
- 第十七篇:IO复用之select实现
前言 在看过前文:初探IO复用后,想必你已对IO复用这个概念有了初步但清晰的认识. 接下来,我要在一个具体的并发客户端中实现它(基于select函数),使得一旦服务器中的客户进程被终止的时候,客户端这 ...
- iOS - AVAudioSession详解
音频输出作为硬件资源,对于iOS系统来说是唯一的,那么要如何协调和各个App之间对这个稀缺的硬件持有关系呢? iOS给出的解决方案是"AVAudioSession" ,通过它可以实 ...
- 由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1'
由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1' 此时进入系统已root模式 ...
- VC下遍历文件夹中的所有文件的几种方法
一.使用::FindFirstFile和::FindNextFile方法 #include "StdAfx.h" #include <windows.h> #inclu ...
- Foxmail邮箱最新应用指南二
Foxmail邮箱最新应用指南二 1.打开Foxmail主界面—工具—账号管理,或者鼠标右击任何已有账号—属性,弹出账号管理窗口,点击左下角的“新建”按钮: 2.输入邮箱地址,下一步→选择邮箱类型(I ...
- R语言(入门小练习篇)
问题: 一组学生参加了数学.科学和英语考试.为了给所有的学生确定一个单一的成绩衡量指标,需要将这些科目的成绩组合起来.另外,还想将前20%的学生评定为A,接下来20%的学生评定为B,以此类推.最后,希 ...