Tensorflow从0到1(2)之基础知识
张量
张量是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() |
|
| 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)之基础知识的更多相关文章
- 三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(sha ...
- ZYNQ笔记(0):C语言基础知识复习
ZYNQ的SDK是用C语言进行开发的,C语言可以说是当今理工类大学生的必备技能.我本科学C语言时就是对付考试而已,导致现在学ZYNQ是一脸懵逼.现在特开一帖,整理一下C语言的基础知识. 一.定义 1. ...
- java8新特性视频、spring4.0视频讲解,javaee基础知识讲解等网址汇总
1.http://ke.atguigu.com/ 海量视频首页 2.http://ke.atguigu.com/course/56 java8新特性学习地址
- 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...
- C# 基础知识系列-13 常见类库(三)
0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...
- C# 基础知识系列- 16 开发工具篇
0. 前言 这是C# 基础知识系列的最后一个内容讲解篇,下一篇是基础知识-实战篇.这一篇主要讲解一下C#程序的结构和主要编程工具. 1. 工具 工欲善其事必先利其器,在实际动手之前我们先来看看想要编写 ...
- tensorflow笔记(一)之基础知识
tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...
- 【深度学习与TensorFlow 2.0】入门篇
注:因为毕业论文需要用到相关知识,借着 TF 2.0 发布的时机,重新捡起深度学习.在此,也推荐一下优达学城与 TensorFlow 合作发布的TF 2.0入门课程,下面的例子就来自该课程. 原文发布 ...
- Tensorflow深度学习之十二:基础图像处理之二
Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474 首先放出原始图像: ...
随机推荐
- F. Dominant Indices
题意:求每个点的子树中哪一层节点数最多,如果有节点数最多不唯一,取层数最小的. 题解:dus on tree 基本想法是对每一个节点都构建一个deep数组,然后从底向上更新过来,但是这样空间复杂度和时 ...
- 两圆相交求面积 hdu5120
转载 两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: ...
- linux 去除^M 换行符
一般,在windows下写的shell脚本,都会去linux执行,都会有^M 符号,那么怎么去除呢? 第一种方法:cat -A filename 就可以看到windows下的断元字符 ^M要去除他,最 ...
- ubuntu18.04.4安装k8s
k8s部署 1.集群所有主机关闭swap sudo swapoff -a sudo sed -i 's/.*swap.*/#&/' /etc/fstab 如果重启后swap还是自动挂载执行sy ...
- 实现.Net程序中OpenTracing采样和上报配置的自动更新
前言 OpenTracing是一个链路跟踪的开放协议,已经有开源的.net实现:opentracing-csharp,同时支持.net framework和.net core,Github地址:htt ...
- Telegraf和Grafana监控多平台上的SQL Server
问题 SQL Server在很多企业中部署在多个平台上(Windows,Linux和Container),需要一种能支持多平台的解决方案用于收集和展示相关的监控指标. 我选择企业中比较流行的监控展示工 ...
- dell5460笔记本电脑ubuntu18.04系统音频驱动的安装和使用
一.背景: 近期使用dell5460笔记本在ubuntu系统下观看视频,发现没有声音,考虑安装音频驱动. 二.音频驱动的安装 linux系统的音频驱动基于ALSA(即Advanced Linux So ...
- 面试题: hashset如何保证值不会被重复的
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 众所周知,HashSet 的值是不可能被重复的,在业务上经常被用来做数据去重的操作,那么,其内部究竟是怎 ...
- 如何获取CSDN的积分?
个人感觉就是写博客就给积分 具体给多少? CSDN应该有自己的积分规则 总之一句话:写博客涨积分
- Java实现 LeetCode 166 分数到小数
166. 分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数,则将循环的部分括在括号内. 示例 1: 输入 ...