张量

张量是tensorflow中的基本数据结构

# 全零张量
zero_tsr = tf.zeros([row_dim, col_dim])
# 全1张量
ones_tsr = tf.ones([row_dim, col_dim])
# 填充张量
filled_tsr = tf.fill([row_dim, col_dim], 42)
# 常量
constant_tsr1 = tf.constant([1,2,3])
constant_tsr2 = tf.constant(42, [row_dim, col_dim])
# 形状相似的张量
zeros_similar = tf.zeros_like(constant_tsr)
ones_similar = tf.ones_like(constant_tsr)
# 序列张量
linear_tsr = tf.linspace(start=0., stop=1., num=3)
inter_seq_tsr = tf.range(start=6, limit=15, delta=3) # 不包括limit
# 随机张量
randunif_tsr = tf.random_uniform( # 均匀分布
[row_dim, col_dim], # 维度
minval=0, maxval=1) # 最大值(不包含),最小值
randnorm_tsr = tf.random_normal( # 正态分布
[row_dim, col_dim], #维度
mean = 0.0, # 均值
stddev = 1.0) # 标准差
truncnorm_tsr = tf.truncated_normal( # 截断正态分布,只取两个标准差之间的数
[row_dim, col_dim],
mean = 0.0,
stddec = 1.0)
## 张量随机洗牌,对每列
shuffled_output = tf.random_shuffle(input_tensor)
## 张量随机裁剪
cropped_output = tf.random_crop(input_tensor, crop_size) # 把张量随机裁剪成指定尺寸
cropped_image = tf.random_crop(my_image, [height/2, width/2, 3]) # 例如把图片长宽缩短一半

变量

tf.Variable()中传入一个张量就可以创建变量了

my_var = tf.Variable(tf.zeros([row_dim, col_dim]))

延伸学习

可以使用tf.convert_to_tensor()函数将任意numpy数组转换为张量,或者将常量转换为一个张量。

创建变量并初始化

my_var = tf.Variable(tf.zeros([2,3]))
sess = tf.Session()
initialize_op = tf.global_variable_initializer()
sess.run(initialize_op)

占位符

占位符仅仅声明数据位置,用于传入数据到计算图。占位符通过feed_dict参数获取数据。

sess = tf.Session()
x = tf.placeholder(shape=[2,2], dtype=tf.float32)
y = tf.identity(x) # return a tensor with the same shape and contents as input.
x_vals = np.random.rand(2,2)
sess.run(y, feed_dict={x:x_vals})

变量初始化延伸

tf.global_variables_initializer()函数会一次性初始化所创建的所有变量,使用方法如下:

initializer_op = tf.global_variables_initializer()

但是,如果是基于已经初始化的变量进行初始化,则必须按顺序初始化

sess = tf.Session()
first_var = tf.Variable(tf.zeros([2,3]))
sess.run(first_var.initializer)
second_var = tf.Variable(tf.zeros_like(first_var))
sess.run(second_var.initializer)

矩阵操作

import tensorflow as tf
sess = tf.Session()
identity_matrix = tf.diag([1., 1., 1.]) # 用tf.diag创建对角矩阵
A = tf.truncated_normal([2, 3])
B = tf.fill([2, 3], 5.0)
C = tf.random_uniform([3, 2])
D = tf.convert_to_tensor(np.array([[1., 2., 3.],
[-3., -7., -1.],
[0., 5., -2.]]))
# 矩阵加法
print(sess.run(A+B))
print(sess.run(tf.add(A,B)))
# 矩阵减法
print(sess.run(A-B))
print(sess.run(tf.subtract(A,B))
# 矩阵乘法
print(sess.run(tf.matmul(B, identity_matrix)))
# 矩阵转置
print(sess.run(tf.transpose(C)))
# 矩阵行列式
print(sess.run(tf.matrix_determinant(D)))
# 矩阵的逆
print(sess.run(tf.matrix_inverse(D)))
# 矩阵Cholesky分解
print(sess.run(tf.cholesky(identity_matrix)))
# 矩阵特征值和特征向量
print(sess.run(tf.self_adjoint_eig(D)))

矩阵的其他操作

add()、subtract()、multiply()、div()加、减、乘、除法,都是逐元素操作(elememt-wise)

# 注意div()对整数操作会向下取整
print(sess.run(tf.div(3,4))) # 输出为零
# truediv()会先转换为浮点数再相除
print(sess.run(tf.truediv(3,4))) # 输出0.75
# 对浮点数进行整数除法,可以使用floordiv()函数
print(sess.run(tf.floordiv(3.0, 4.0))) # 输出 0.0

另一个重要的函数是取模运算mod()

print(sess.run(tf.mod(22.0, 5.0))) # 输出 2.0

cross()函数计算两个张量间的点积。 (这个不是很懂?~?!)

print(sess.run(tf.cross([1., 0., 0.], [0., 1., 0.])))

常用数学函数列表

函数 功能
abs() 返回输入参数张量的绝对值
ceil() 返回输入参数张量的向上取整结果
cos() 返回输入参数张量的余弦值
exp() 返回输入参数张量的自然常数e的指数
floor() 返回输入参数张量的向下取整结果
inv() 返回输入参数张量的倒数
log() 返回输入参数张量的自然对数
maximum() 返回两个输入参数张量中的最大值
minimum() 返回两个输入参数张量中的最小值
neg() 返回输入参数张量的负值
pow() 返回输入参数第一个张量的第二个张量次幂
round() 返回输入参数张量的四舍五入结果
rsqrt() 返回输入参数张量的平方根的倒数
sign() 根据输入参数张量的符号,返回-1, 0 或1
sin() 返回输入参数张量的正弦值
square() 返回输入参数张量的平方

特殊数学函数列表
注:这里的函数不是很懂,日后用到了再深究

函数 功能
digamma() 函数, lgamma()函数导数
erf() 返回张量的高斯误差函数
erfc() 返回张量的互补误差函数
igamma() 返回下不完全函数
igammac() 返回上不完全全函数
lbeta() 返回贝塔函数绝地值得自然对数
lgamma() 返回函数绝对值的自然对数
squared_difference() 返回两个张量间差值的平方

实现激励函数

激励函数主要是为计算图归一化返回结果而引进的非线性部分。激励函数位于tensorflow的nn库(neural network, nn)。

激励函数 定义 备注
tf.nn.relu() max(0, x) 大于零取原值,小于零取零
tf.nn.relu6() min(6, max(0, x)) 大于六取六,其他与relu一样
tf.nn.sigmoid() 0到1之间平滑的s曲线
tf.nn.tanh() -1到1之间平滑的s型曲线
softsign() 符号函数的连续估计
softplus() ReLU函数的平滑版
tf.nn.elu() ……

Tensorflow从0到1(2)之基础知识的更多相关文章

  1. 三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(sha ...

  2. ZYNQ笔记(0):C语言基础知识复习

    ZYNQ的SDK是用C语言进行开发的,C语言可以说是当今理工类大学生的必备技能.我本科学C语言时就是对付考试而已,导致现在学ZYNQ是一脸懵逼.现在特开一帖,整理一下C语言的基础知识. 一.定义 1. ...

  3. java8新特性视频、spring4.0视频讲解,javaee基础知识讲解等网址汇总

    1.http://ke.atguigu.com/     海量视频首页 2.http://ke.atguigu.com/course/56    java8新特性学习地址

  4. 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...

  5. C# 基础知识系列-13 常见类库(三)

    0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...

  6. C# 基础知识系列- 16 开发工具篇

    0. 前言 这是C# 基础知识系列的最后一个内容讲解篇,下一篇是基础知识-实战篇.这一篇主要讲解一下C#程序的结构和主要编程工具. 1. 工具 工欲善其事必先利其器,在实际动手之前我们先来看看想要编写 ...

  7. tensorflow笔记(一)之基础知识

    tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...

  8. 【深度学习与TensorFlow 2.0】入门篇

    注:因为毕业论文需要用到相关知识,借着 TF 2.0 发布的时机,重新捡起深度学习.在此,也推荐一下优达学城与 TensorFlow 合作发布的TF 2.0入门课程,下面的例子就来自该课程. 原文发布 ...

  9. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

随机推荐

  1. ExtJS动态隐藏Panel中按钮

    1.直接隐藏 在bbar的按钮中直接加属性:hidden : true 属性,可隐藏:disabled : true 属性,可禁用 在columns列中直接加属性:hidden : true 属性,可 ...

  2. DBCP连接池和事物

    工具类案例 public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final Str ...

  3. MySql 语言分类

    (1)数据定义语言,即SQL DDL,用于定义SQL模式.基本表.视图.索引等结构.(2)数据操纵语言,即SQL DML.数据操纵分成数据查询和数据更新两类.(3)数据查询语言,即SQL DQL.(4 ...

  4. Altera的Cyclone系列器件命名规则

    Altera的Cyclone系列器件命名规则如下 器件系列 + 器件类型(是否含有高速串行收发器) +  LE逻辑单元数量 + 封装类型 + 高速串行收发器的数量(没有则不写) + 引脚数目 + 器件 ...

  5. akka-typed(0) - typed-actor, typed messages

    akka 2.6.x正式发布以来已经有好一段时间了.核心变化是typed-actor的正式启用,当然persistence,cluster等模块也有较大变化.一开始从名称估摸就是把传统any类型的消息 ...

  6. 5.Linux的启动过程和系统指令

    1.Linux的启动过程 作为一台计算机,启动它的第一步是加电自检,也就是给电脑用电然后按电源按钮开机.加电之后的运行步骤:(1)加载bios,然后检查硬盘信息 (2)读取MBR的配置(MBR就是硬盘 ...

  7. 创建并加入节点&练习

    1.节点的属性 节点的属性:所有节点都有的属性 元素节点,   属性节点,   文本节点 nodeType            只  读  属  性 nodeName       返回对应节点的名字 ...

  8. 如何开启远程桌面连接功能?windows的远程桌面连接功能使用步骤

    由于远程桌面的诞生,为电脑工作者提供了极大的便利.首先,推荐1款比较适合服务器管理的远程桌面: 可以管理1000+服务器/vps的远程桌面:IIS7远程桌面管理 开启远程桌面功能步骤: 1.右键点击电 ...

  9. ASP.NET Core 依赖注入最佳实践与技巧

    ASP.NET Core 依赖注入最佳实践与技巧 原文地址:https://medium.com/volosoft/asp-net-core-dependency-injection-best-pra ...

  10. 实现一个 $attr(name,value) 遍历;属性为 name 值为 value 的元素集合

    <body> <div class="box clearfix"></div> <div name="zs">& ...