Tensorflow 是google大脑小组的工程师们开发的用于机器学习和深度神经网络方面的研究,它通过一个数据流图来进行计算。[本文是对Tensorflow社区资料进行学习和实践,其中文社区还是很好的学习资源]

一、基本概念:

1、 数据流程图  data flow graphs

它的数据流图如下图所示(来源于网络):

2、 节点【nodes】: 图中的各种形状的方块,表示的是某种数学操作【op】

3、  线【edges】: 表示节点间相互联系的多维数据数组,在tensorflow中,称为 张量【tensor】。个人理解为数学中的向量矩阵如:

三个元素的一维向量  [ 1, 2, 3 ],   2x2 的二维向量  [ [ 1, 1],[1, 1 ] ]

4、  重塑节点【Reshape】:前面说了 节点表示计算, 所以reshape是一个计算节点,用于进行矩阵的行数、列数、维度的调整。经常用这个节点进行降低维度计算

5、  激活函数层【ReLULayer】:实现了对输入数据的非负处理,将小于零的数据进行了截断。

6、  逻辑层【Logit layer】: 实现逻辑回归,实现分类器计算

7、  计算梯度【Gradients】:计算梯度

8、  梯度下降训练【SGD Trains】:进行梯度下降训练优化

二、tensorflow的基本使用

一般来说,tensorflow使用图(graph)来表示计算任务,在会话 (Session) 的上下文 (context) 中执行图 ;使用tensor 表示数据,变量 (Variable)记录计算状态;使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据;

import tensorflow as tf
     
    # 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点
    # 加到默认图中.
    #
    # 构造器的返回值代表该常量 op 的返回值.
    matrix1 = tf.constant([[3., 3.]])
     
    # 创建另外一个常量 op, 产生一个 2x1 矩阵.
    matrix2 = tf.constant([[2.],[2.]])
     
    # 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
    # 返回值 'product' 代表矩阵乘法的结果.
    product = tf.matmul(matrix1, matrix2)
     
    #Session 对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 "with" 代码块 来自动完成关闭动作.
    #注意下面第二句和第三局的缩进
    with tf.Session() as sess:
      result = sess.run([product])
      print result

下面看看执行结果

1、变量

变量的使用,需要通过初始化加入到图中

import tensorflow as tf
     
    # 创建一个变量, 初始化为标量 0.
    count = tf.Variable(0, name="counter")
     
    # 创建一个 op, 其作用是使 count 增加 1
    one = tf.constant(1)
    new_value = tf.add(count, one)
    update = tf.assign(count, new_value)
     
    # 启动图后, 变量必须先经过初始化,
    # 首先必须增加一个`初始化` op 到图中.
    init_op = tf.initialize_all_variables()
     
    # 启动图, 运行 op
    with tf.Session() as sess:
      # 运行 'init' op
      result = sess.run(init_op)
      print sess.run(count)
      # 运行 op, 更新count值
      sess.run(update)
      print sess.run(count)

执行结果如下


之所以会多打印一个1,是因为 tf.assign( oldValue, newValue) 函数会打印

2) Fetch  拿取、获取

可以一次传入多个tensor 获取结果

import tensorflow as tf
     
    #定义两个常量
    x = tf.constant(3)
    y = tf.constant(4)
     
    # 创建3个 op,计算x平方和y平方和
    xx = tf.mul(x, x)
    yy = tf.mul(y, y)
    zz = tf.add(xx, yy)
     
     
    # 启动图, 运行 op
    with tf.Session() as sess:
      result = sess.run([xx, yy, zz])
      print result

执行结果 不因为 sess.run([xx,yy,zz]) 中间的tensor 顺序而改变结果


     3) feed

tensorflow提供了占位符和feed填入的机制,对于计算中的参数(预先用占位符定义),通过feed_dict的方式进行代入实际计算值的方法

import tensorflow as tf
     
    #定义两个常量
    x = tf.placeholder(tf.float32)
    y = tf.placeholder(tf.float32)
     
    # 创建3个 op,计算x平方和y平方和
    xx = tf.mul(x, x)
    yy = tf.mul(y, y)
    zz = tf.add(xx, yy)
     
     
    # 启动图, 运行 op
    with tf.Session() as sess:
      result = sess.run([xx, yy, zz], feed_dict={x:[3.], y:[4.]} )
      print result

计算结果如下:

---------------------
原文:https://blog.csdn.net/csolo/article/details/78788631

Tensorflow实践 基本原理学习和框架使用相关推荐

  1. 令人激动!谷歌推强化学习新框架「多巴胺」,基于TensorFlow,已开源丨附github...

    郭一璞 发自 凹非寺  量子位 报道 | 公众号 QbitAI 上周那个在DOTA2 TI8赛场上"装逼失败"的OpenAI Five,背后是强化学习的助推. 其实不仅仅是Open ...

  2. python神经网络原理pdf_《深度学习原理与 TensorFlow实践》高清完整PDF版 下载

    1.封面介绍 2.出版时间 2019年7月 3.推荐理由 本书介绍了深度学习原理与TensorFlow实践.着重讲述了当前学术界和工业界的深度学习核心知识:机器学习概论.神经网络.深度学习.着重讲述了 ...

  3. 热度直逼TensorFlow的深度学习框架,我用它画下女朋友最美的脸

    这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了. 阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属.这也得益于 PyTorch 的易学易用,大多数人第一次使用 PyTorch ...

  4. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(八)(TensorFlow基础))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(八)(TensorFlow基础)) 8 TensorFlow基础 8.1 TensorFlow2.0特性 8.1.1 Tenso ...

  5. Keras还是TensorFlow?深度学习框架选型实操分享

    译者| 王天宇.林椿眄 责编| Jane.琥珀 出品| AI科技大本营 深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从.如 Google 的 TensorFlow.亚马逊的 MX ...

  6. 深度学习原理与TensorFlow实践

    深度学习原理与TensorFlow实践 王琛,胡振邦,高杰 著 ISBN:9787121312984 包装:平装 开本:16开 用纸:胶版纸 正文语种:中文 出版社:电子工业出版社 出版时间:2017 ...

  7. Karpathy更新深度学习开源框架排名:TensorFlow第一,PyTorch第二

    上周,Keras作者.谷歌研究科学家François Chollet晒出一张图,他使用Google Search Index,展示了过去三个月,ArXiv上提到的深度学习框架排行,新智元也做了报道: ...

  8. 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练

    背景 我们在之前的文章中介绍过如何通过PAI内置的TensorFlow框架实验基于Cifar10的图像分类,文章链接:https://yq.aliyun.com/articles/72841.使用Te ...

  9. DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略

    DL框架之TensorFlow:TensorFlow Core(低级别TensorFlow API)的简介.安装.使用方法之详细DL框架之TensorFlow:深度学习框架TensorFlow Cor ...

最新文章

  1. C++编译器会对没有构造函数的类生成默认构造函数吗?
  2. CSS 从入门到放弃系列:CSS的引入方式
  3. python3屏幕抓取程序_python之屏幕抓取
  4. python爬虫自学路线_python 爬虫学习路线:从入门到进阶
  5. python初步入门_python如何入门
  6. gogs mysql 报错_docker上对gogs二次开发
  7. RxSwift之深入解析map操作符的底层实现
  8. 华为被超越!这家公司成中国最大智能手机制造商,不是小米!
  9. 《大数据》2015年第2期“研究”——大数据时代的数据传输网
  10. 160308_Helloworld_Console Application
  11. mysql 版本太高_mysql创建新库以及解决版本过高8.0以上导致navicat无法连接的问题...
  12. json文件存储 qt_QT开发(五十一)——QtQuick基础
  13. Mac 升级 catalina 后无法创建文件,Read-only file system
  14. Lingo多版本下载地址和安装教程
  15. 细胞自动机 通用计算机,细胞自动机论
  16. smbd cpu高 linux,Samba smbd vfs.c访问限制绕过漏洞(CVE-2015-5252)
  17. 相律公式表达式_第六章 相平衡主要公式及其适用条件
  18. linux 卸载安装 mysql
  19. CI130X智能语音芯片应用于空气炸锅,可实现离线语音控制空气炸锅,高抗噪高识别率
  20. 微博修改域名的服务器,新浪微博个性域名是什么 新浪微博如何修改个性域名...

热门文章

  1. [Win] 利用Memory DC抽取EXE的图标并保存为BMP文件
  2. Delphi Form Designer (窗体设计器)之二
  3. [PKUSC2018]真实排名——线段树+组合数
  4. 2.1Python基础语法(一)之注释与数据类型:
  5. PHP把下划线分隔命名的字符串 转换成驼峰式命名方式
  6. mini-treeselect的动态赋值
  7. HTML5之地理信息应用 获取自己的位置
  8. 一个 Linux 上分析死锁的简单方法
  9. 第九章 线程与内核对象的同步(6)
  10. [转]Java中Set的深入研究