Windows中 Anaconda,Tensorflow 和 Pycharm的安装和配置   https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/84945596

安装Tensorflow时,上方文章可能会出问题,用pip3 ………或 pip …Install --user …… https://blog.csdn.net/a781751136/article/details/80231406

一、初识Tensorflow

三好学生问题

三好学生的评分公式: 总分 = 德育分 * 0.6 + 智育 * 0.3 + 体育 * 0.1

计算 总分的公式实际上就是 把 3项分数 各自乘以 一个权重,再相加求和

要解决的问题:

有两个家长 知道自己孩子的总分和各个的成绩,想知道学校究竟是怎么算的?【也就是各个项的权重】

但是,这两位学生的成绩组成的公式中共有3个未知数,但此处只有两个式子,也就无法用解方程的方法获得答案

所以————> 神经网络~

(1)分析问题,搭建神经网络

  • x1,x2,x3,n1,n2,n3,y —— 节点名称
  • *w1,*w2,*w3,Σ  —— 节点运算

来模拟: 总分y = x1*w1 + x2*w2 + x3*w3;

代码如下:

  1. import tensorflow as tf
  2. x1 = tf.placeholder(dtype=tf.float32)
  3. #placeholder 占位符 —— 等待模型运行时 才会输入的节点,要定义成“占位符”
  4. #dtype=tf.float32 —— 数据类型是 32位浮点小数
  5. x2 = tf.placeholder(dtype=tf.float32)
  6. x3 = tf.placeholder(dtype=tf.float32)
  7. #意思是 —— 定义一个占位符变量x3 ,其数据类型是 32位浮点小数
  8.  
  9. #类似权重这种 在训练过程中经常变换的神经元参数,tensorflow称之为“变量”,此处为防止混淆,用“神经元的可变参数”
  10. #并指定 可变参数初始值为 0.1
  11. w1 = tf.Variable(0.1,dtype=tf.float32)
  12. w2 = tf.Variable(0.1,dtype=tf.float32)
  13. w3 = tf.Variable(0.1,dtype=tf.float32)
  14.  
  15. n1 = x1 * w1
  16. n2 = x2 * w2
  17. n3 = x3 * w3
  18. y = n1 + n2 + n3
  19.  
  20. #sess变量,包含了tensorflow 的session会话对象【这玩意是啥,后期说】,现在可以简单的理解成 —— 管理神经网络运行的一个对象
  21. sess = tf.Session()
  22. #会话对象管理神经网络第一步 —— 一般是要把所有的可变参数 初始化
  23. #tf.global_variables_initializer() 返回一个专门用于初始化可变参数的对象,调用 sess会话对象的成员函数 run()
  24. init = tf.global_variables_initializer()
  25. sess.run(init)
  26.  
  27. #执行一次神经网络的计算
  28. #第一个参数是一个数组,代表我们需要查看哪些结果项
  29. #另一个参数是个 命名参数,代表我们要输入的数据 ———— 输入的是字典类型的值,必须用 {} 括起来,里面分别按 占位符的名称 一个个指明数值
  30. result = sess.run([x1,x2,x3,w1,w2,w3,y],feed_dict={x1:90,x2:80,x3:70})
  31. print(result)
  1. [array(90., dtype=float32), array(80., dtype=float32), array(70., dtype=float32), 0.1, 0.1, 0.1, 24.0]

可以在上方的输出结果中发现:输入的分数 + 可变参数 + 最后总结果y

验证下,y = 90*0.1+80*0.1+70*0.1 = 24

(2)训练神经网络

神经网络的训练过程:

  1. 输入数据
  2. 计算结果 —— 神经网根据 输入的数据和当前的可变参数值计算结果
  3. 计算误差 —— 将计算的结果和标准答案对比,得出误差
  4. 调整神经网络的可变参数 —— 根据误差的大小,使用反向传播算法,对神经网络中的可变参数调节
  5. 再次训练
  1. import tensorflow as tf
  2.  
  3. x1 = tf.placeholder(dtype=tf.float32)
  4. x2 = tf.placeholder(dtype=tf.float32)
  5. x3 = tf.placeholder(dtype=tf.float32)
  6. #期待的对应结果值 —— “目标值”
  7. yTrain = tf.placeholder(dtype=tf.float32)
  8.  
  9. w1 = tf.Variable(0.1,dtype=tf.float32)
  10. w2 = tf.Variable(0.1,dtype=tf.float32)
  11. w3 = tf.Variable(0.1,dtype=tf.float32)
  12.  
  13. n1 = x1 * w1
  14. n2 = x2 * w2
  15. n3 = x3 * w3
  16. y = n1 + n2 + n3
  17. #tf.abs() 函数用来计算绝对值 —— 计算误差
  18. loss = tf.abs(y - yTrain)
  19. #优化器变量optimizer —— 优化器就是用来调整神经网络可变参数的对象
  20. optimizer = tf.train.RMSPropOptimizer(0.001) #选取了一种优化器,参数0.001是这个优化器的学习率
  21. #学习率决定了优化器每次调整参数的幅度大小
  22.  
  23. #训练对象 train,train代表了我们准备如何来训练这个神经网络
  24. train = optimizer.minimize(loss) #这里要求 把loss最小化的原则调整可变参数
  25.  
  26. sess = tf.Session()
  27. init = tf.global_variables_initializer()
  28. sess.run(init)
  29. result = sess.run([train,x1,x2,x3,w1,w2,w3,y,yTrain,loss],feed_dict={x1:90,x2:80,x3:70,yTrain:85})
  30. print(result)
  31. # yTrain 是对应每一组输入数据的目标结果值
  32. # 要求输出的结果数组中多加了一个 train 对象,在结果数组中有train 对象,意味着要求程序执行一次train对象所包含的训练过程
  33. # 在这个过程中,y,loss也会被计算出来,所以添加到结果数组中,方便对照
  34. result = sess.run([train,x1,x2,x3,w1,w2,w3,y,yTrain,loss],feed_dict={x1:98,x2:95,x3:87,yTrain:96})
  35. print(result)
  1. [None, array(90., dtype=float32), array(80., dtype=float32), array(70., dtype=float32), 0.10316052, 0.10316006, 0.103159375, 24.0, array(85., dtype=float32), 61.0]
  2. [None, array(98., dtype=float32), array(95., dtype=float32), array(87., dtype=float32), 0.10554425, 0.10563005, 0.1056722, 28.884804, array(96., dtype=float32), 67.1152]

只有在结果数组中加上了 训练对象,这次 sess.run() 函数的执行才算是 ”训练“,否则只是”运行“神经网络进行一次计算

我们可以看到,由于引入了训练过程,3个可变参数发生了变化

  1. import tensorflow as tf
  2.  
  3. x1 = tf.placeholder(dtype=tf.float32)
  4. x2 = tf.placeholder(dtype=tf.float32)
  5. x3 = tf.placeholder(dtype=tf.float32)
  6. yTrain = tf.placeholder(dtype=tf.float32)
  7. w1 = tf.Variable(0.1,dtype=tf.float32)
  8. w2 = tf.Variable(0.1,dtype=tf.float32)
  9. w3 = tf.Variable(0.1,dtype=tf.float32)
  10. n1 = x1 * w1
  11. n2 = x2 * w2
  12. n3 = x3 * w3
  13. y = n1 + n2 + n3
  14. loss = tf.abs(y - yTrain)
  15. optimizer = tf.train.RMSPropOptimizer(0.001)
  16. train = optimizer.minimize(loss)
  17. sess = tf.Session()
  18. init = tf.global_variables_initializer()
  19. sess.run(init)
  20. for i in range(2):
  21. result = sess.run([train,x1,x2,x3,w1,w2,w3,y,yTrain,loss],feed_dict={x1:90,x2:80,x3:70,yTrain:85})
  22. print(result)
  23. result = sess.run([train,x1,x2,x3,w1,w2,w3,y,yTrain,loss],feed_dict={x1:98,x2:95,x3:87,yTrain:96})
  24. print(result)
  1. [None, array(90., dtype=float32), array(80., dtype=float32), array(70., dtype=float32), 0.10316052, 0.10316006, 0.103159375, 24.0, array(85., dtype=float32), 61.0]
  2. [None, array(98., dtype=float32), array(95., dtype=float32), array(87., dtype=float32), 0.10554425, 0.10563005, 0.1056722, 28.884804, array(96., dtype=float32), 67.1152]
  3. [None, array(90., dtype=float32), array(80., dtype=float32), array(70., dtype=float32), 0.10740828, 0.107431844, 0.107439496, 25.346441, array(85., dtype=float32), 59.653557]
  4. [None, array(98., dtype=float32), array(95., dtype=float32), array(87., dtype=float32), 0.10918032, 0.10926805, 0.10930761, 30.079273, array(96., dtype=float32), 65.92073]

总共进行了2轮训练,每轮两次

可以对比第一轮第一次和第二轮第一次的loss值,发现误差已经降低了

同理,第一轮第二次和第二轮第二次的loss值,误差也降低了

增大训练轮数,会发现两者的误差值会越来越小

Tensorflow 安装 和 初识的更多相关文章

  1. tensorflow安装日志(PIP)

    最近刚刚接触深度学习,安装一下tf 环境:华硕Z170主板.i7 6700k.GTX1070.Ubuntu16.04.Python2.7 在这之前先装好了cuda8.0.cudnn5.0.caffe整 ...

  2. TensorFlow安装-windows系统

    官方各版本的安装说明:https://www.tensorflow.org/install/ 本文介绍如何在windows环境下安装tensorflow, 跑起来简单的demo. 1.安装python ...

  3. TensorFlow 安装详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 『不要把手段当成目标 — <一个瑜伽行者的自传>』   本文提纲 1. 机器学习 2 ...

  4. tensorflow安装过程cpu版-(windows10环境下)---亲试可行方案

    tensorflow安装过程cpu版-(windows10环境下)---亲试可行方案   一, 前言:本次安装tensorflow是基于Python的,安装Python的过程不做说明 二, 安装环境: ...

  5. TensorFlow 安装报错的解决办法(安装1.5版本)

    1.安装Anaconda 百度下载windows版本,一路点下一步,安装好了Anaconda,自带python3.6.6. 2.安装TensorFlow (1)打开Anaconda Prompt,输入 ...

  6. ubuntu TensorFlow安装

    Tensorflow安装确实比caffe简单... cuda,cudnn安装就不说了 1 安裝pip(有就跳过) sudo apt-get install python-pip python-dev ...

  7. TensorFlow安装之后导入报错:libcudnn.so.6:cannot open sharedobject file: No such file or directory

    转载自:http://blog.csdn.net/silent56_th/article/details/77587792 系统环境:Ubuntu16.04 + GTX1060 目的:配置一下pyth ...

  8. TensorFlow 安装以及python虚拟环境

    python虚拟环境 由于TensorFlow只支持某些版本的python解释器,如Python3.6.如果其他版本用户要使用TensorFlow就必须安装受支持的python版本.为了方便在不同项目 ...

  9. TensorFlow安装时错误CondaValueError: prefix already exists: G:\softs\Anaconda\envs\tensorflow

    TensorFlow安装时,TensorFlow环境已经调好了,就是下面的第(3)步, 可我自己偏偏选了个Python3.7,因为检测到自己的Python最新版本为3.7,就手贱安了TensorFlo ...

随机推荐

  1. 第二章 Vue快速入门-- 17 v-for指令的四种使用方式

    1.v-for循环普通数组 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. mysql和oracle的语法差异(网络收集)

    oracle没有offet,limit,在mysql中我们用它们来控制显示的行数,最多的是分页了.oracle要分页的话,要换成rownum. oracle建表时,没有auto_increment,所 ...

  3. 权限和ACL访问控制-02-特殊权限

    X(大写) X:给目录x权限,不给文件x权限(当文件本来就有x权限的话会重新赋予x权限) 例如: chmod -R +X dir2 SUID SUID属性一般运用在可执行文件上,当用户执行该执行文件时 ...

  4. 阅读之Java多线程

    Java多线程 用多线程只有一个目的,就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现. 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程 并行与并发: 并行:多个cpu ...

  5. 【转载】Java项目中常用的异常处理情况总结

    一,JDK中与异常相关的类 分析: Java中的异常分类: Throwable类有两个直接子类: Exception:出现的问题是可以被捕获的: Error:系统错误,通常由JVM处理. 可捕获的异常 ...

  6. oracle-linux7 镜像地址 secuCRT 注册-linux内核

    http://mirrors.dotsrc.org/oracle-linux/OL7/u4/x86_64/ secuCRT 注册 https://github.com/hanxianzhai/Secu ...

  7. 定时任务spring task

    1)spring boot 几种定时任务的实现方式:https://www.jianshu.com/p/b6809b5a0c26 2)spring-boot 定时任务之Scheduled Task:h ...

  8. 官网Windows 10安装程序驱动下载--截止:2019.01.06版本

    说明:鉴于win7,8不可直接再下载原装iOS文件,这份共享程序包是为以后N年做的准备.如果N年后这个包还可以用,就可以省去很多麻烦. 百度网盘分享:https://pan.baidu.com/s/1 ...

  9. 暂时跳过的Leetcode题目

    963 最小面积矩形 II 有数学几何的味道,感觉这不是笔试面试的重点. 932 漂亮数组 构造题

  10. TCP定时器 之 重传/延迟ACK/保活 定时器初始化

    创建socket时会创建传输控制块,之后调用初始化函数对控制块进行初始化,其中包括对定时器的初始化,tcp会调用tcp_init_xmit_timers函数来初始化这些定时器,本文将详细分析tcp_i ...