人们都说Chainer是一块非常灵活you要用的框架,今天接着项目里面的应用,初步接触一下,涨涨姿势,直接上源码吧,看着好理解。其实跟Tensorflow等其他框架都是一个套路,个人感觉更简洁了。

 1 """
 2     测试使用
 3 """
 4 import pickle
 5 import time
 6 import numpy as np
 7 import matplotlib.pyplot as plt
 8 from chainer import Chain, Variable, optimizers, serializers
 9 import chainer.functions as F
10 import chainer.links as L
11
12 # 创建Chainer Variables变]量
13 a = Variable(np.array([3], dtype=np.float32))
14 b = Variable(np.array([4], dtype=np.float32))
15 c = a**2 +b**2
16
17 # 5通过data属性检查之前定义的变量
18 print('a.data:{0}, b.data{1}, c.data{2}'.format(a.data, b.data, c.data))
19
20 # 使用backward()方法,对变量c进行反向传播.对c进行求导
21 c.backward()
22 # 通过在变量中存储的grad属性,检查其导数
23 print('dc/da = {0}, dc/db={1}, dc/dc={2}'.format(a.grad, b.grad, c.grad))
24
25 # 在chainer中做线性回归
26 x = 30*np.random.rand(1000).astype(np.float32)
27 y = 7*x + 10
28 y += 10*np.random.randn(1000).astype(np.float32)
29
30 plt.scatter(x, y)
31 plt.xlabel('x')
32 plt.ylabel('y')
33 plt.show()
34
35
36 # 使用chainer做线性回归
37
38 # 从一个变量到另一个变量建立一个线性连接
39 linear_function = L.Linear(1, 1)
40 # 设置x和y作为chainer变量,以确保能够变形到特定形态
41 x_var = Variable(x.reshape(1000, -1))
42 y_var = Variable(y.reshape(1000, -1))
43 # 建立优化器
44 optimizer = optimizers.MomentumSGD(lr=0.001)
45 optimizer.setup(linear_function)
46
47
48 # 定义一个前向传播函数,数据作为输入,线性函数作为输出
49 def linear_forward(data):
50     return linear_function(data)
51
52
53 # 定义一个训练函数,给定输入数据,目标数据,迭代数
54 def linear_train(train_data, train_traget, n_epochs=200):
55     for _ in range(n_epochs):
56         # 得到前向传播结果
57         output = linear_forward(train_data)
58         # 计算训练目标数据和实际标数据的损失
59         loss = F.mean_squared_error(train_traget, output)
60         # 在更新之前将梯度取零,线性函数和梯度有非常密切的关系
61         # linear_function.zerograds()
62         linear_function.cleargrads()
63         # 计算并更新所有梯度
64         loss.backward()
65         # 优化器更新
66         optimizer.update()
67
68
69 # 绘制训练结果
70 plt.scatter(x, y, alpha=0.5)
71 for i in range(150):
72     # 训练
73     linear_train(x_var, y_var, n_epochs=5)
74     # 预测值
75     y_pred = linear_forward(x_var).data
76     plt.plot(x, y_pred, color=plt.cm.cool(i / 150.), alpha=0.4, lw=3)
77
78 slope = linear_function.W.data[0, 0]        # linear_function是之前定义的连接,线性连接有两个参数W和b,此种形式可以获取训练后参数的值,slope是斜率的意思
79 intercept = linear_function.b.data[0]       # intercept是截距的意思
80 plt.title("Final Line: {0:.3}x + {1:.3}".format(slope, intercept))
81 plt.xlabel('x')
82 plt.ylabel('y')
83 plt.show()

转载于:https://www.cnblogs.com/demo-deng/p/9713471.html

Chainer的初步学习相关推荐

  1. HTMLParser的初步学习

    Python的自带模块--HTMLParser的初步学习 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. ...

  2. 初步学习pg_control文件之三

    接前文,初步学习pg_control文件之二 继续学习: 研究 DBState,先研究 DB_IN_PRODUCTION ,看它如何出现: 它出现在启动Postmaster时运行的函数处: /* * ...

  3. eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作

    [Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...

  4. json2.js的初步学习与了解(转)

    转载来源:http://apps.hi.baidu.com/share/detail/6092406 json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org ...

  5. 【TensorFlow-serving】初步学习模型部署

    前言 初步学习tensorflow serving的手写数字识别模型部署.包括简单的模型训练.保存.部署上线.因为对docker和网络不太熟悉,可能会有部分错误,但是看完博客,能跑通整个流程.此博客将 ...

  6. 初步学习pg_control文件之八

    接前文  初步学习pg_control文件之七  继续 看:catalog_version_no 代码如下: static void WriteControlFile(void) {.../** In ...

  7. 初步学习pg_control文件之六

    接前文:初步学习pg_control文件之五 ,DB_IN_ARCHIVE_RECOVERY何时出现? 看代码:如果recovery.conf文件存在,则返回 InArchiveRecovery = ...

  8. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助...

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require( ...

  9. 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习

    虚拟机的安装及Linux的初步学习 坎坷的安装过程 首先我按照老师给的基于VirtualBox虚拟机安装Ubuntu图文教程进行了下载,下载很顺利但是安装时出现了问题. 起初我以为是电脑位数问题,但我 ...

最新文章

  1. castle 组件化开发应用配制示例
  2. [译] 关于Angular的变更检测(Change Detection)你需要知道这些
  3. FreeRTOS 之一 源码目录文件 及 移植详解
  4. PHP json_encode不转义中文
  5. yelee主题安装gitalk(转载+整理)
  6. 查看当前机器.net 版本的方法
  7. opencv画线和文字
  8. android 面向对象 5,C++基础学习笔记(5)---面向对象(测试题)
  9. CPDA数据分析师认证,大数据分析的综合型人才
  10. 同样是写博客,为什么我男朋友的粉丝那么多?!
  11. oracle vm server for x86,扛起Xen的大旗!体验Oracle VM Server 3.4.6与基于OL7.7的OVM Manager...
  12. 有赞亿级订单同步的探索与实践
  13. 那些年 我们一起追过的DIY三大件
  14. 截图快捷键ctrl加什么
  15. CAD得到所有图层名(网页版)
  16. 中兴算法挑战赛-比特派:跳高
  17. javaAPI文档中文版(JDK11在线版)无需下载、直接打开
  18. Java 8 流过滤List
  19. Android开发:设置背景图片
  20. ​想知道与你最般配的伴侣长什么样?这个“夫妻相”生成器要火(附链接)...

热门文章

  1. 自考专升本拿证需要多久 几年能毕业
  2. php 长图切成多张图片,长图打印,图片平均切割
  3. 第十七届全国大学生智能汽车比赛
  4. 最新IDEA 提示:更新 TKK 失败,请检查网络连接
  5. 什么是MAC地址及作用管理教程——What is the MAC address and role management tutorial
  6. Delphi StringGrid单元格背景色填充颜色
  7. 利用iText生成pdf报表
  8. Spark-ML-基于云平台和用户日志的推荐系统
  9. 知瓜数据丨2021医美行业数据趋势分析报告
  10. 论文阅读:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift