TensorFlow基础总结
1.基础概念
- Tensor:类型化的多维数组,图的边;Tensor所引用的并不持有具体的值,而是保持一个计算过程,可以使用session.run()或者t.eval()对tensor的值进行计算。
- Operation:执行计算的单元,图的节点;这里大概可总结为Tensor创建,Tensor转换,逻辑判断,数学运算,聚合运算,序列比较与索引提取等。
- Graph:一张有边与点的图,其表示了需要进行计算的任务;
- Session:称之为会话的上下文,用于执行图。用户管理CPU和GPU和网络连接。
2.Tensor
2.1 数据结构
rank:数据的维度,其与线性代数中的rank不是一个概念。
shape:tensor每个维度数据的个数;下图表示了rank,shape的关系。
| Rank | Shape | Dimension number | Example |
|---|---|---|---|
| 0 | [] | 0-D | A 0-D tensor. A scalar. |
| 1 | [D0] | 1-D | A 1-D tensor with shape [5]. |
| 2 | [D0, D1] | 2-D | A 2-D tensor with shape [3, 4]. |
| 3 | [D0, D1, D2] | 3-D | A 3-D tensor with shape [1, 4, 3]. |
| n | [D0, D1, ... Dn-1] | n-D | A tensor with shape [D0, D1, ... Dn-1]. |
- data type:单个数据的类型。下图表示了所有的types。
| Data type | Python type | Description |
|---|---|---|
| DT_FLOAT | tf.float32 | 32 bits floating point. |
| DT_DOUBLE | tf.float64 | 64 bits floating point. |
| DT_INT8 | tf.int8 | 8 bits signed integer. |
| DT_INT16 | tf.int16 | 16 bits signed integer. |
| DT_INT32 | tf.int32 | 32 bits signed integer. |
| DT_INT64 | tf.int64 | 64 bits signed integer. |
| DT_UINT8 | tf.uint8 | 8 bits unsigned integer. |
| DT_UINT16 | tf.uint16 | 16 bits unsigned integer. |
| DT_STRING | tf.string | Variable length byte arrays. Each element of a Tensor is a byte array. |
| DT_BOOL | tf.bool | Boolean. |
| DT_COMPLEX64 | tf.complex64 | Complex number made of two 32 bits floating points: real and imaginary parts. |
| DT_COMPLEX128 | tf.complex128 | Complex number made of two 64 bits floating points: real and imaginary parts. |
| DT_QINT8 | tf.qint8 | 8 bits signed integer used in quantized Ops. |
| DT_QINT32 | tf.qint32 | 32 bits signed integer used in quantized Ops. |
| DT_QUINT8 | tf.quint8 | 8 bits unsigned integer used in quantized Ops. |
2.2 稀疏张量(SparseTensor)
用于处理高维稀疏数据,包含indices,values,dense_shape三个属性。
indices:形状为(N, ndims)的Tensor,N为非0元素个数,ndims表示张量阶数
values:形状为(N)的Tensor,保存indices中指定的非0元素的值
dense_shape:形状为(ndims)的Tensor,表示该稀疏张量对应稠密张量的形状
3.Operation
3.1 Tensor创建函数
| 用法 | 说明 |
|---|---|
| tf.zeros(shape, dtype=tf.float32, name=None) | 创建所有元素设置为零的张量 |
| tf.zeros_like(tensor, dtype=None, name=None) | 返回tensor与所有元素设置为零相同的类型和形状的张量 |
| tf.ones(shape, dtype=tf.float32, name=None) | 创建一个所有元素设置为1的张量。 |
| tf.ones_like(tensor, dtype=None, name=None) | 返回tensor与所有元素设置为1相同的类型和形状的张量 |
| tf.fill(dims, value, name=None) | 创建一个填充了标量值的张量 |
| tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) | 从截断的正态分布中输出随机值 |
| tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) | 从正态分布中输出随机值 |
| tf.random_uniform(shape, minval=0.0, maxval=1.0, dtype=tf.float32, seed=None, name=None) | 从均匀分布输出随机值 |
| tf.eye(num_rows, num_columns=None, batch_shape=None, dtype=tf.float32, name=None) | 构建一个单位矩阵, 或者 batch 个矩阵,batch_shape 以 list 的形式传入 |
| tf.diag(diagonal, name=None) | 构建一个对角矩阵 |
| tf.global_variables_initializer() | 初始化全部变量 |
3.2 Tensor转换函数
| 用法 | 说明 |
|---|---|
| tf.random_shuffle(value, seed=None, name=None) | 沿其第一维度随机打乱 |
| tf.set_random_seed(seed) | 设置图级随机种子 |
| tf.string_to_number(string_tensor, out_type=None, name=None) | 张量变换 |
| tf.to_double(x, name='ToDouble') | 张量变换 |
| tf.to_float(x, name='ToFloat') | 张量变换 |
| tf.to_bfloat16(x, name='ToBFloat16') | 张量变换 |
| tf.to_int32(x, name='ToInt32') | 张量变换 |
| tf.to_int64(x, name='ToInt64') | 张量变换 |
| tf.cast(x, dtype, name=None) | 张量变换 |
| tf.shape(input, name=None) | 用于确定张量的形状并更改张量的形状 |
| tf.size(input, name=None) | 用于确定张量的形状并更改张量的形状 |
| tf.rank(input, name=None) | 用于确定张量的形状并更改张量的形状 |
| tf.reshape(tensor, shape, name=None) | 用于确定张量的形状并更改张量的形状 |
| tf.squeeze(input, squeeze_dims=None, name=None) | 用于确定张量的形状并更改张量的形状 |
| tf.expand_dims(input, dim, name=None) | 用于确定张量的形状并更改张量的形状 |
| tf.slice(input_, begin, size, name=None) | 切片与扩展 |
| tf.split(split_dim, num_split, value, name='split') | 切片与扩展 |
| tf.tile(input, multiples, name=None) | 切片与扩展 |
| tf.pad(input, paddings, name=None) | 切片与扩展 |
| tf.concat(concat_dim, values, name='concat') | 切片与扩展 |
| tf.pack(values, name='pack') | 切片与扩展 |
| tf.unpack(value, num=None, name='unpack') | 切片与扩展 |
| tf.reverse_sequence(input, seq_lengths, seq_dim, name=None) | 切片与扩展 |
| tf.reverse(tensor, dims, name=None) | 切片与扩展 |
| tf.transpose(a, perm=None, name='transpose') | 切片与扩展 |
| tf.gather(params, indices, name=None) | 切片与扩展 |
| tf.dynamic_partition(data, partitions, num_partitions, name=None) | 切片与扩展 |
| tf.dynamic_stitch(indices, data, name=None) | 切片与扩展 |
3.3 逻辑判断
| 用法 | 说明 |
|---|---|
| tf.logical_and(x, y, name=None) | 逻辑运算符 |
| tf.logical_not(x, name=None) | 逻辑运算符 |
| tf.logical_or(x, y, name=None) | 逻辑运算符 |
| tf.logical_xor(x, y, name='LogicalXor') | 逻辑运算符 |
| tf.equal(x, y, name=None) | 比较运算符 |
| tf.not_equal(x, y, name=None) | 比较运算符 |
| tf.less(x, y, name=None) | 比较运算符 |
| tf.less_equal(x, y, name=None) | 比较运算符 |
| tf.greater(x, y, name=None) | 比较运算符 |
| tf.greater_equal(x, y, name=None) | 比较运算符 |
| tf.select(condition, t, e, name=None) | 比较运算符 |
| tf.where(input, name=None) | 比较运算符 |
| tf.is_finite(x, name=None) | 判断检查 |
| tf.is_inf(x, name=None) | 判断检查 |
| tf.is_nan(x, name=None) | 判断检查 |
| tf.verify_tensor_all_finite(t, msg, name=None) 断言张量不包含任何NaN或Inf | 判断检查 |
| tf.check_numerics(tensor, message, name=None) | 判断检查 |
| tf.add_check_numerics_ops() | 判断检查 |
| tf.Assert(condition, data, summarize=None, name=None) | 判断检查 |
| tf.Print(input_, data, message=None, first_n=None, summarize=None, name=None) | 判断检查 |
3.4 数学函数
| 用法 | 说明 |
|---|---|
| tf.add(x, y, name=None) | 加法(支持 broadcasting) |
| tf.subtract(x, y, name=None) | 减 |
| tf.multiply(x, y, name=None) | 乘 |
| tf.divide(x, y, name=None) | 除 |
| tf.mod(x, y, name=None) | 取余 |
| tf.pow(x, y, name=None) | 幂 |
| tf.square(x, name=None) | 求平方 |
| tf.sqrt(x, name=None) | 开方 |
| tf.exp(x, name=None) | 自然指数 |
| tf.log(x, name=None) | 自然对数 |
| tf.negative(x, name=None) | 取相反数 |
| tf.sign(x, name=None) | 返回 x 的符号 |
| tf.reciprocal(x, name=None) | 取倒数 |
| tf.abs(x, name=None) | 求绝对值 |
| tf.round(x, name=None) | 四舍五入 |
| tf.ceil(x, name=None) | 向上取整 |
| tf.floor(x, name=None) | 向下取整 |
| tf.rint(x, name=None) | 取最接近的整数 |
| tf.maximum(x, y, name=None) | 返回两tensor中的最大值 (x > y ? x : y) |
| tf.minimum(x, y, name=None) | 返回两tensor中的最小值 (x < y ? x : y) |
| tf.cos(x, name=None) | 三角函数和反三角函数 |
| tf.sin(x, name=None) | 三角函数和反三角函数 |
| tf.tan(x, name=None) | 三角函数和反三角函数 |
| tf.acos(x, name=None) | 三角函数和反三角函数 |
| tf.asin(x, name=None) | 三角函数和反三角函数 |
| tf.atan(x, name=None) | 三角函数和反三角函数 |
| tf.matmul(a,b,name=None) | 矩阵乘法(tensors of rank >= 2) |
| tf.transpose(a, perm=None, name='transpose') | 转置,可以通过指定 perm=[1, 0] 来进行轴变换 |
| tf.trace(x, name=None) | 求矩阵的迹 |
| tf.matrix_determinant(input, name=None) | 计算方阵行列式的值 |
| tf.matrix_inverse(input, adjoint=None, name=None) | 求解可逆方阵的逆 |
| tf.svd(tensor, name=None) | 奇异值分解 |
| tf.qr(input, full_matrices=None, name=None) | QR 分解 |
| tf.norm(tensor, ord='euclidean', axis=None, keep_dims=False, name=None) | 求张量的范数(默认2) |
3.5 聚合相关
| 用法 | 说明 |
|---|---|
| tf.reduce_sum(input_tensor, axis=None, keep_dims=False, name=None) | 计算输入 tensor 所有元素的和,或者计算指定的轴所有元素的和 |
| tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None) | 求均值 |
| tf.reduce_max(input_tensor, axis=None, keep_dims=False, name=None) | 求最大值 |
| tf.reduce_min(input_tensor, axis=None, keep_dims=False, name=None) | 求最小值 |
| tf.reduce_prod(input_tensor, axis=None, keep_dims=False, name=None) | 求累乘 |
| tf.reduce_all(input_tensor, axis=None, keep_dims=False, name=None) | 全部满足条件 |
| tf.reduce_any(input_tensor, axis=None, keep_dims=False, name=None) | 至少有一个满足条件 |
3.6 序列比较与索引提取
| 用法 | 说明 |
|---|---|
| tf.setdiff1d(x, y, index_dtype=tf.int32, name=None) | 比较两个 list 或者 string 的不同,并返回不同的值和索引 |
| tf.unique(x, out_idx=None, name=None) | 返回 x 中的唯一值所组成的tensor 和原 tensor 中元素在现 tensor 中的索引 |
| tf.where(condition, x=None, y=None, name=None) | x if condition else y, condition 为 bool 类型的 |
| tf.argmax(input, axis=None, name=None, output_type=tf.int64) | 返回沿着坐标轴方向的最大值的索引 |
| tf.argmin(input, axis=None, name=None, output_type=tf.int64) | 返回沿着坐标轴方向的最小值的索引 |
| tf.invert_permutation(x, name=None) | x 的值当作 y 的索引,range(len(x)) 索引当作 y 的值 |
| tf.edit_distance(x,y) | 编辑距离 |
4.Graph
| 用法 | 说明 |
|---|---|
| tf.get_default_graph() | 访问默认图 |
| tf.Graph.seed | 此图内使用的随机种子 |
| tf.Graph.__init__() | 创建一个新的空的图 |
| tf.Graph.as_default() | 返回一个使得当前图成为默认图的上下文管理器 |
| tf.Graph.as_graph_def(from_version=None, add_shapes=False) | 返回一个表示这个图的序列化的 GraphDef。 |
| tf.Graph.as_graph_element(obj, allow_tensor=True, allow_operation=True) | 给定一个obj,看它能否对应到图中的元素 |
| tf.Graph.get_operation_by_name(name) | 根据名字获取某个operation |
| tf.Graph.get_tensor_by_name(name) | 根据名字获取某个tensor |
| tf.Graph.get_operations() | 获取所有operations |
| tf.Graph.is_feedable(tensor) | 判断是否可feed或可fetch |
| tf.Graph.is_fetchable(tensor_or_op) | 判断是否可feed或可fetch |
| tf.Graph.prevent_feeding(tensor) | 设置不可feed或不可fetch |
| tf.Graph.prevent_fetching(op) | 设置不可feed或不可fetch |
| tf.Graph.finalize() | 结束这个图,使它只读,不能向g添加任何新的操作 |
| tf.Graph.finalized | 如果这个图已经结束,它为真 |
| tf.Graph.control_dependencies(control_inputs) | 返回一个明确控制依赖(control dependencies)的上下文管理器 |
| tf.Graph.devide(device_name_or_function) | 返回一个明确默认设备的使用的上下文管理器 |
| tf.Graph.name_scope(name) | 返回为操作创建分层的上下文管理器 |
| tf.Graph.add_to_collection(name,value) | 将value值存入给定name的collection |
| tf.Graph.add_to_collections(names,value) | 将value存入给定的names的collections中 |
| tf.Graph.get_collection(name,scope=None) | 返回给定名称集合的值的列表 |
5.Session
| 用法 | 说明 |
|---|---|
| tf.Session() | |
| tf.InteractiveSession() | |
| tf.get_default_session() | 获取默认session |
| tf.Session().graph | |
| tf.Session(). init(self, target='', graph=None, config=None) | |
| tf.Session().as_default() | 返回使该对象成为默认session的上下文管理器. |
| tf.Session().close | 关闭这个session |
| tf.Session().list_devices() | 列出此session中的可用设备. |
| tf.Session().run(fetches,feed_dict=None) | 执行 |
| tf.Session().reset(target) | 在target上重置资源容器,并关闭所有连接的会话. |
附录
https://www.jianshu.com/p/55a47b1720ba
https://www.cnblogs.com/qjoanven/p/7736025.html
https://blog.csdn.net/xun527/article/details/79690226
https://blog.bitsrc.io/learn-tensorflow-fundamentals-in-20-minutes-cdef2dec331a
https://blog.csdn.net/kmsj0x00/article/details/80698794
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-slp52jz8.html
TensorFlow基础总结的更多相关文章
- TensorFlow基础
TensorFlow基础 SkySeraph 2017 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com Over ...
- TensorFlow基础笔记(0) 参考资源学习文档
1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...
- TensorFlow基础笔记(3) cifar10 分类学习
TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...
- TensorFlow基础剖析
TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使 用节点表示抽象的数学计算,并使用 OP 表达计算的逻 ...
- 05基于python玩转人工智能最火框架之TensorFlow基础知识
从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...
- tensorflow基础篇-1
1.使用占位符和变量 import tensorflow as tf import numpy as np #-----创建变量并初始化----------- def first(): my_var= ...
- TensorFlow应用实战 | TensorFlow基础知识
挺长的~超出估计值了~预计阅读时间20分钟. 从helloworld开始 mkdir 1.helloworld cd 1.helloworldvim helloworld.py 代码: # -*- c ...
- tensorflow基础练习:线性模型
TensorFlow是一个面向数值计算的通用平台,可以方便地训练线性模型.下面采用TensorFlow完成Andrew Ng主讲的Deep Learning课程练习题,提供了整套源码. 线性回归 多元 ...
- TensorFlow 基础概念
初识TensorFlow,看了几天教程后有些无聊,决定写些东西,来夯实一下基础,提供些前进动力. 一.Session.run()和Tensor.eval()的区别: 最主要的区别就是可以使用sess. ...
- TensorFlow 基础知识
参考资料: 深度学习笔记目录 向机器智能的TensorFlow实践 TensorFlow机器学习实战指南 Nick的博客 TensorFlow 采用数据流图进行数值计算.节点代表计算图中的数学操作,计 ...
随机推荐
- DevExpress ASP.NET Core v19.1版本亮点:数据网格和树列表
行业领先的.NET界面控件DevExpress 发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Core Controls v19.1中新增的一些控件及增强 ...
- 使用IDEA搭建一个Spring + Spring MVC 的Web项目(零配置文件)
话不多说,直接上代码: 注解是Spring的一个构建的一个重要手段,减少写配置文件,下面解释一下一些要用到的注解: @Configuration 作用于类上面,声明当前类是一个配置类(相当于一个Spr ...
- PHP---pdo和mongodb的操作使用
<?php $pdo = new PDO("mysql:host=127.0.0.1;dbname=testdb","root","123456 ...
- http的get与post
1.http请求 http有两种报文,请求报文 (发送请求,可能包含数据)和响应报文(服务器响应请求获取数据).一个http请求报文由请求行,请求头部,空行和请求正文(数据)四个部分组成. HTTP请 ...
- Python 操作 MySQL 数据库Ⅲ
数据库查询操作 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据. fetchone(): 该方法获取下一个查询结果集.结果集是一个 ...
- Redis常用数据类型底层数据结构分析
Redis是一种键值(key-Value)数据库,相对于关系型数据库,它也被叫作非关系型数据库 Redis中,键的数据类型是字符串,但是为了非富数据存储方式,方便开发者使用,值的数据类型有很多 字符串 ...
- Spring MVC 的 multipartResolver 不能同iWebOffice2006 共同使用
转:http://jamesby.iteye.com/blog/57381 项目使用iWebOffice2006,本来可以正常使用,但是系统有文件上传需求,故定义了一个multipartResolve ...
- 直接选择排序(Straight Selection Sort)
1.定义 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕. 常用的选择排序方法有直接选择排序和堆 ...
- Splay教程
目录 前言 引入 教程 Rotate Splay 一些其他操作: 区间翻转 结语 前言 Splay是名副其实的区间小能手.它会经常出现在一些有关区间的题上.而本蒟蒻只会Treap,感到分外难受,于是就 ...
- vue 组件 Vue.component 用法
todo https://blog.csdn.net/weixin_41796631/article/details/82929139