1、Tensorflow的简介

就是一个科学计算的库,用于数据流图(张量流,可以理解成一个N维得数组)。

Tensorflow支持CPU和GPU,内部实现了对于各种目标函数求导的方式。

2、Tensorflow的安装(python3.5以上)

# pip install tensorflow==1.4.0   安装cpu版本

# pip install tensorflow-gpu 安装gpu版本

# pip3.6 install tensorflow -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com  使用阿里云镜像安装

3、基本概念

图(graph):描述计算过程

张量(tensor):数据,每个tensor是一个类型化的多维数组

操作(op):一个op获得多个tensor,输入/输出

会话(session):图的op的操作执行,定义什么时候运行

变量(variable):过程被改变,用于维护状态

4、边

实线,表述数据依赖,从前到后,叫前向传播,x-->y,而残差从后向前流动一遍,就是反向传播

虚线,表示控制依赖,用于控制操作的运行。

5、数据属性

tf.float32/64      32/64位浮点型

tf.int64/32/16/8    有符号整型

tf.uint8   无符号整型

tf.string  字节数组

tf.bool  布尔型

tf.complex64  由32位浮点组成的复数

tf.qint8/32 用于量化操作的8/32位有符号整型

tf.qunit8  用于量化操作的8位无符号整型

6、节点,节点又称算子,它代表一个操作

数学运算:Add、Subtract、Multiply、Div、Exp、Log....

数组运算:Concat、Slice、Split、Constant、Rank、Shape....

矩阵运算:MatMul、Matrixlnverse....

有状态的操作:Variable、Assign....

神经网络构建:SoftMax、Sigmoid、ReLU...

检查点:Save、Restore....

队列和同步操作:Enqueue、Dequeue、MutexAcquire

控制张量流的操作:Merge、Switch、Enter、Leave....

7、程序结构

构建阶段和执行阶段

8、创建一个简单的图(全部是常量的)

# -- encoding:utf-8 --

import tensorflow as tf

# 定义常量矩阵a(dype类型为常量,shape可构建矩阵类型)
a = tf.constant([[1,2],[3,4]],dtype=tf.int32)
b = tf.constant([5,6,7,8],dtype=tf.int32,shape=[2,2])
# 以a,b作为输入,进行矩阵的乘法操作matmul
c = tf.matmul(a,b)
g = tf.add(a,c) #op之间如果没有依赖关系,会并行处理
#调用session的run方法来执行矩阵 #log_device_placement是否打日志,默认不打日志
#allow_soft_placement是否动态使用CPU和GPU,默认为False
with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess1:
result = sess1.run(g)
# 结果是多个值,返回一个列表
# result = sess.run(fetches=[c,g])
print('type:{},value:{}'.format(type(result), result))

9、创建一个有变量的图


# -- encoding:utf-8 --

import tensorflow as tf
#定义一个变量w1
w1 = tf.Variable(initial_value=3.0,dtype=tf.float32,name='w1')
#定义一个常量
a =tf.constant(value=2.0,dtype=tf.float32,name='w1')
#定义一个变量w2
w2 = tf.Variable(w1.initialized_value() * a,name='w2') c = tf.add(w1,w2)
#进行全局变量初始化
init_op = tf.global_variables_initializer() with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
sess.run(init_op)
result = sess.run(c)
print("result:{}".format(result))

10、feed填充机制,在构建图使用placeholder类型的API临时替代任意操作的张量(占位符)

# -- encoding:utf-8 --

import tensorflow as tf

#构建一个矩阵的乘法,但是矩阵在运行的时候给定

#dtype、shape、name
m1 = tf.placeholder(dtype=tf.float32,shape=[2,3],name='placeholder_m1')
m2 = tf.placeholder(dtype=tf.float32,shape=[3,2],name='placeholder_m2')
m3 = tf.matmul(m1,m2) init_op = tf.global_variables_initializer() with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
sess.run(init_op)
result = sess.run(fetches=[m3],feed_dict={m1: [[1,2,3],[4,5,6]],m2: [[1,2],[3,4],[5,6]]})
print('result:{}'.format(result))

11、变量进行更新操作,迭代操作

import tensorflow as tf

a = tf.Variable(initial_value=0,dtype=tf.int32,name='v_x')
#变量a的更新
assign_op = tf.assign(ref = a,value = a+1) init_op = tf.global_variables_initializer() with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
sess.run(init_op)
for i in range(5):
r_x = sess.run(a)
sess.run(assign_op)
print(r_x)

一、TensorFlow的简介和安装和一些基本概念的更多相关文章

  1. 人工智能 tensorflow框架-->简介及安装01

    简介:Tensorflow是google于2015年11月开源的第二代机器学习框架. Tensorflow名字理解:图形边中流动的数据叫张量(Tensor),因此叫Tensorflow 既 张量流动 ...

  2. 第四百一十六节,Tensorflow简介与安装

    第四百一十六节,Tensorflow简介与安装 TensorFlow是什么 Tensorflow是一个Google开发的第二代机器学习系统,克服了第一代系统DistBelief仅能开发神经网络算法.难 ...

  3. TensorFlow Serving简介

    一.TensorFlow Serving简介 TensorFlow Serving是GOOGLE开源的一个服务系统,适用于部署机器学习模型,灵活.性能高.可用于生产环境. TensorFlow Ser ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. Java Gradle入门指南之简介、安装与任务管理

        这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍.    ...

  6. 细细品味Storm_Storm简介及安装

    Storm是由专业数据分析公司BackType开发的一个分布式实时数据处理软件,可以简单.高效.可靠地处理大量的数据流.Twitter在2011年7月收购该公司,并于2011年9月底正式将Storm项 ...

  7. VMware vSphere 5.1 简介与安装

    虚拟化系列-VMware vSphere 5.1 简介与安装  标签: 虚拟化 esxi5.1 VMware vSphere 5.1 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  8. Nutch搜索引擎(第2期)_ Solr简介及安装

    1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...

  9. Node.js的简介和安装

    一.Node.js的简介和安装 a)       什么是Node.js? Node.js是一个开发平台 让JavaScript运行在服务器端的开发平台 ---简单点说就是用JavaScript写服务器 ...

随机推荐

  1. Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神

    转载:https://blog.csdn.net/zhaokaiqiang1992/article/details/43731967 CSDN 鸿洋:http://blog.csdn.net/lmj6 ...

  2. windows linux 子系统折腾记

    最近买了部新电脑,海尔n4105的一体机,好像叫s7. 放在房间里面,看看资料.因为性能孱弱,所以不敢安装太强大的软件,然后又有一颗折腾的心.所以尝试了win10自带的linux子系统. 然后在应用商 ...

  3. Java关于字符串工具类~持续汇总~

    /** * 01 * 描述:String的substring和replace方法使用 * [时间 2019年3月5日下午3:22:08 作者 陶攀峰] */ public static void te ...

  4. zoomeye搜索+用selenium实现对佳能打印机的爬虫

    本文仅用于学习参考.要遵纪守法哦! 目的:找出一台佳能打印机,得到它的日志文件,并利用其远程打印. 1.先用zoomeye找一个打印机出来,搜索语句:printer +country:"CN ...

  5. github在README.md中插入图片

    例子 ![image](https://raw.githubusercontent.com/sunday123/Pendant/master/1.PNG)

  6. 【转】Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录于PEP 20. 语句执行之后,终端 ...

  7. 996.ICU 写给... 写给年轻的自己

    好久不"水"长文了,随着Github开源项目996.ICU (工作996,生病ICU) (本意是为了指出互联网等早9晚9每周工作6天的不良加班工作制风气不符合法律,是对程序员等技术 ...

  8. ASP.NET MVC 下自定义模型绑定,去除字符串类型前后的空格

    直接贴代码了: SkyModelBinder.cs using System.ComponentModel; using System.Linq; using System.Web.Mvc; name ...

  9. 实战 EF(LINQ) 如何以子查询的形式来 Join

    如题,大多数网上关于 LINQ Join 的示例都是以 from x in TableA  join ... 这样的形式,这种有好处,也有劣势,就是在比如我们使用的框架如果已经封装了很多方法,比如分页 ...

  10. e2e测试框架之Cypress

    谈起web自动化测试,大家首先想到的是Selenium!随着近几年前端技术的发展,出现了不少前端测试框架,这些测试框架大多并不依赖于Selenium,这一点跟后端测试框架有很大不同,如Robot Fr ...