书籍:《深度学习——基于Python语言和TensorFlow平台》

三好学生问题的引入:
学校要评选三好学生,根据德育分、智育分和体育分3项分数来计算一个总分,然后根据总分来确定谁能够被评为三好学生。现有两位孩子的家长,知道自己孩子的3项分数及总分,但是学校并没有告诉家长们计算出总分的规则,我们用人工智能中神经网络的方法来帮家长们推算出这3个权重分别是多少。

代码实现过程:

import tensorflow as tf# 定义3个输入节点,把德育、智育和体育3个分数分别作为x1,x2,x3的数值输入
# 这种等待模型运行时才会输入的节点,在Tensorflow中要把它定义为placeholder(占位符)
# 所谓占位符,就是在编写程序的时候还不确定输入什么数,而是在程序运行的时候才会输入,编程时仅仅把这个节点定义好,先“占个位子”
# placehold在定义时调用了一个参数,这是一种高级的参数写法,叫做命名参数。
# 一般计算机语言的参数只支持按照顺序来写,不需要给每个参数命名,但这样就不允许顺序发生错误。
# 而python支持命名参数,可以通过指定参数的名称来赋值,避免只用顺序来区别参数造成错乱的情况,也可以适应有时候只需要某几个参数的情况。
# dtype是data type的缩写,表示占位符所代表的数值的类型
# tf.float32是Tensorflow中的32位浮点数类型,所谓32位浮点数,指的是用32位二进制数字来代表1个小数。
x1 = tf.placeholder(dtype=tf.float32)
x2 = tf.placeholder(dtype=tf.float32)
x3 = tf.placeholder(dtype=tf.float32)# yTrain用来在训练时传入针对每一组输入数据期待的对应计算结果值,简称为目标计算结果或目标值
yTrain = tf.placeholder(dtype=tf.float32)# 在神经网络中,类似权重这种会在训练过程中经常性地变化的神经元参数,Tensorflow中把它们叫做变量,这与我们一般大多数计算机语言中变量的含义还是有一些区别的
# 为避免混淆,把它们叫做神经网络的可变参数
# 除了用dtype参数来指定数值类型,还传入了另一个初始值参数,这个参数没有用命名参数的形式
# 这是因为tf.Variable函数规定第一个参数是用于指定可变参数的初始值
w1 = tf.Variable(0.1, dtype=tf.float32)
w2 = tf.Variable(0.1, dtype=tf.float32)
w3 = tf.Variable(0.1, dtype=tf.float32)# 定义隐藏层的3个节点
n1 = x1 * w1
n2 = x2 * w2
n3 = x3 * w3# 输出层的定义
y = n1 + n2 + n3loss = tf.abs(y - yTrain)
# 定义一个优化器变量optimizer,所谓优化器,就是用来调整神经网络可变参数的对象
# Tensorflow中有很多种优化器,这次选用的就是AlphaGo使用的优化器RMSProOptimizer,通过tf.train.RMSProOptimizer来获得
# 参数0.001是这个优化器的学习率,学习率决定了优化器每次调整参数的幅度大小,先赋一个常用的数值0.001
optimizer = tf.train.RMSPropOptimizer(0.001)
# 定义一个训练对象train,train对象代表了准备如何来训练这个神经网络
# 把train对象定义为optimizer.minimize(loss),就是要求优化器按照把loss最小化的原则来调整可变参数
train = optimizer.minimize(loss)# 定义了一个sess变量,它包含一个Tensorflow的会话对象,不必深究会话是什么,可以简单地把会话理解成管理神经网络运行的一个对象
# 有了会话对象,神经网络就可以正式运转了
# 在每次定义完神经网络模型后,在准备运行前都要定义一个会话对象,才能开始训练这个模型或者用训练好的模型去进行预测计算
sess = tf.Session()# 会话对象管理神经网络的第一步,一般是要把所有的可变参数初始化,也就是给所有可变参数一个各自的初始值
# 首先让变量init等于tf.global_variables_initializer这个函数的返回值,它返回的是一个专门用于初始化可变参数的对象
# 然后调用会话对象sess的成员函数run(),带上init变量作为参数,就可以实现对之前定义的神经网络模型中所有可变参数的初始化
init = tf.global_variables_initializer()
# 就是在sess会话中运行初始化这个函数,具体给每个可变参数赋什么样的初值,是由刚才定义w1,w2,w3时的第一个函数参数来决定的
sess.run(init)
# 这两条语句也可以合起来写成sess.run(tf.global_variables_initializer())# 执行一次神经网络的计算
# sess.run函数的第一个参数为一个数组,代表我们需要查看哪些结果项
# 为了查看结果更清除,除了最终输出层的结果y,还把输入层的x1,x2,x3和隐藏层的可变参数w1,w2,w3都获取出来,以便对比参照
# sess.run韩式的另一个参数识别个命名参数feed_dict,代表要输入的数据
# feed在英语中有喂的意思,所以有时候也称为给神经网络喂数据
# dict是dictionary的简写,代表着参数要求输入的是前面介绍过的字典类型的数值,所以要按照字典类型数值的写法
# 把sess.run函数的执行结果存到了result变量中,这是一个包含了x1,x2,x3,w1,w2,w3和y的具体数值在内的数组
# 在结果数组中有train对象,意味着要求程序要执行train对象所包含的训练过程,在这个过程中,y、loss等计算结果自然也会被计算出来
# 所以在结果数组中即使只写一个train,其他的结果也会被计算出来,只不过看不到而已
# 在结果数组中加上了yTrain和loss,以便对照
# 另外,只有在结果数组中加上了训练对象,这次sess.run函数的执行才能被称为一个训练,否则只是运行一个神经网络或者说是用神经网络运行一次计算
for i in range(2):result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1: 90, x2: 80, x3: 70, yTrain: 85})print(result)result = sess.run([train, x1, x2, x3, w1, w2, w3, y, yTrain, loss], feed_dict={x1: 98, x2: 95, x3: 87, yTrain: 96})print(result)

运行结果:

深度学习——初识TensorFlow相关推荐

  1. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(下)

    这是本文的最后一部分内容了,前两部分内容的文章: [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上) [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复( ...

  2. [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)

    上一篇文章–[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)中,我们先介绍了对于图像修复的背景,需要利用什么信息来对缺失的区域进行修复,以及将图像当做概率分布采样的样本来看 ...

  3. 深度学习与TensorFlow

    深度学习与TensorFlow DNN(深度神经网络算法)现在是AI社区的流行词.最近,DNN 在许多数据科学竞赛/Kaggle 竞赛中获得了多次冠军. 自从 1962 年 Rosenblat 提出感 ...

  4. 深度学习调用TensorFlow、PyTorch等框架

    深度学习调用TensorFlow.PyTorch等框架 一.开发目标目标 提供统一接口的库,它可以从C++和Python中的多个框架中运行深度学习模型.欧米诺使研究人员能够在自己选择的框架内轻松建立模 ...

  5. 在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别

    2019独角兽企业重金招聘Python工程师标准>>> 在了解了TensorflowJS的一些基本模型的后,大家会问,这究竟有什么用呢?我们就用深度学习中被广泛使用的MINST数据集 ...

  6. TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

    TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...

  7. 【深度学习】Tensorflow搭建卷积神经网络实现情绪识别

    [深度学习]Tensorflow搭建卷积神经网络实现情绪识别 文章目录 1 Tensorflow的基本使用方法1.1 计算图1.2 Feed1.3 Fetch1.4 其他解释 2 训练一个Tensor ...

  8. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)

    初学者快速掌握主流深度学习框架Tensorflow.Keras.Pytorch学习代码 一.TensorFlow 1.资源地址: 2.资源介绍: 3.配置环境: 4.资源目录: 二.Keras 1.资 ...

  9. TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报 分类: 深度学习及TensorFlow实现(10) 版权声明:

    TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报  分类: 深度学习及TensorFlow实现(10)  版权声明:本 ...

最新文章

  1. 诺奖团队最新研究:独居太久容易睡眠不足、暴饮暴食 | Nature
  2. NOI前总结:点分治
  3. Cookie对象的应用
  4. 用C#生成中文汉字验证码的基本原理
  5. 荣耀v40pro可以用鸿蒙系统,荣耀V40Pro快来了!麒麟9000+120Hz+鸿蒙系统,价格感人...
  6. 2021最新4合1即时通讯IM源码-服务端+PC+WEB+安卓+IOS完整原生源码
  7. 推荐系统组队学习——GBDT+LR
  8. mysql study_mysql_study_3
  9. Facebook广告收费出价方式之cpi
  10. pacman入门使用指南
  11. 上升沿判断语句_股票上升趋势中回调买入技巧,强势股顺势横盘突破买入法
  12. 视频播放不流畅怎么办?使用CDN加速一步搞定!
  13. 快播王欣最新项目大揭秘!
  14. R实战 | NGS数据时间序列分析(maSigPro)
  15. 错过的二十年后:香港的科技败局和AI未来
  16. js运行后自动刷新页面的问题
  17. prproj是什么格式?prproj怎么导入pr?prproj文件怎么打开?prproj预设导入教程
  18. 视频教学:7分钟入门线性代数+微积分
  19. 2022-06-30 Unity核心8——模型导入
  20. 最赚钱的日内交易策略_百万美金交易员分享:我认为这是世界上最简单的外汇交易策略...

热门文章

  1. 【JSP开发】有关session的一些重要的知识点
  2. SharePoint 2013 配置InfoPath 列表表单
  3. gitlab贡献率_如何为GitLab做贡献
  4. devops 文化_DevOps之外的无责文化示例
  5. 如何使用Magit管理Git项目
  6. 开源中国 开源世界2018_2018年最受欢迎的报道:法律问题和开源社区
  7. 系统权限安全责任书_权限越大,责任越大
  8. php实现数字英文验证码,PHP英文数字验证码生成类
  9. PX4代码解析(1)
  10. java memcached设置过期时间_Memcached的MemCachedClient设置过期时限