TensorFlow — 相关 API

TensorFlow 相关函数理解

任务时间:时间未知

tf.truncated_normal

  1. truncated_normal(
  2. shape,
  3. mean=0.0,
  4. stddev=1.0,
  5. dtype=tf.float32,
  6. seed=None,
  7. name=None
  8. )

功能说明:

产生截断正态分布随机数,取值范围为[mean - 2 * stddev, mean + 2 * stddev]

参数列表:

参数名 必选 类型 说明
shape 1 维整形张量或array 输出张量的维度
mean 0 维张量或数值 均值
stddev 0 维张量或数值 标准差
dtype dtype 输出类型
seed 数值 随机种子,若 seed 赋值,每次产生相同随机数
name string 运算名称

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 truncated_normal.py

示例代码:/home/ubuntu/truncated_normal.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. initial = tf.truncated_normal(shape=[3,3], mean=0, stddev=1)
  4. print tf.Session().run(initial)

然后执行:

  1. python /home/ubuntu/truncated_normal.py

执行结果:

将得到一个取值范围 [-2, 2] 的 3 * 3 矩阵,您也可以尝试修改源代码看看输出结果有什么变化?

tf.constant

  1. constant(
  2. value,
  3. dtype=None,
  4. shape=None,
  5. name='Const',
  6. verify_shape=False
  7. )

功能说明:

根据 value 的值生成一个 shape 维度的常量张量

参数列表:

参数名 必选 类型 说明
value 常量数值或者 list 输出张量的值
dtype dtype 输出张量元素类型
shape 1 维整形张量或 array 输出张量的维度
name string 张量名称
verify_shape Boolean 检测 shape 是否和 value 的 shape 一致,若为 Fasle,不一致时,会用最后一个元素将 shape 补全

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 constant.py,内容可参考:

示例代码:/home/ubuntu/constant.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. import numpy as np
  4. a = tf.constant([1,2,3,4,5,6],shape=[2,3])
  5. b = tf.constant(-1,shape=[3,2])
  6. c = tf.matmul(a,b)
  7. e = tf.constant(np.arange(1,13,dtype=np.int32),shape=[2,2,3])
  8. f = tf.constant(np.arange(13,25,dtype=np.int32),shape=[2,3,2])
  9. g = tf.matmul(e,f)
  10. with tf.Session() as sess:
  11. print sess.run(a)
  12. print ("##################################")
  13. print sess.run(b)
  14. print ("##################################")
  15. print sess.run(c)
  16. print ("##################################")
  17. print sess.run(e)
  18. print ("##################################")
  19. print sess.run(f)
  20. print ("##################################")
  21. print sess.run(g)

然后执行:

  1. python /home/ubuntu/constant.py

执行结果:

  • a: 2x3 维张量;
  • b: 3x2 维张量;
  • c: 2x2 维张量;
  • e: 2x2x3 维张量;
  • f: 2x3x2 维张量;
  • g: 2x2x2 维张量。

您也可以尝试修改源代码看看输出结果有什么变化?

tf.placeholder

  1. placeholder(
  2. dtype,
  3. shape=None,
  4. name=None
  5. )

功能说明:

是一种占位符,在执行时候需要为其提供数据

参数列表:

参数名 必选 类型 说明
dtype dtype 占位符数据类型
shape 1 维整形张量或 array 占位符维度
name string 占位符名称

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 placeholder.py,内容可参考:

示例代码:/home/ubuntu/placeholder.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. import numpy as np
  4. x = tf.placeholder(tf.float32,[None,10])
  5. y = tf.matmul(x,x)
  6. with tf.Session() as sess:
  7. rand_array = np.random.rand(10,10)
  8. print sess.run(y,feed_dict={x:rand_array})

然后执行:

  1. python /home/ubuntu/placeholder.py

执行结果:

输出一个 10x10 维的张量。您也可以尝试修改源代码看看输出结果有什么变化?

tf.nn.bias_add

  1. bias_add(
  2. value,
  3. bias,
  4. data_format=None,
  5. name=None
  6. )

功能说明:

将偏差项 bias 加到 value 上面,可以看做是 tf.add 的一个特例,其中 bias 必须是一维的,并且维度和 value 的最后一维相同,数据类型必须和 value 相同。

参数列表:

参数名 必选 类型 说明
value 张量 数据类型为 float, double, int64, int32, uint8, int16, int8, complex64, or complex128
bias 1 维张量 维度必须和 value 最后一维维度相等
data_format string 数据格式,支持'NHWC'和'NCHW'
name string 运算名称

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 bias_add.py,内容可参考:

示例代码:/home/ubuntu/bias_add.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. import numpy as np
  4. a = tf.constant([[1.0, 2.0],[1.0, 2.0],[1.0, 2.0]])
  5. b = tf.constant([2.0,1.0])
  6. c = tf.constant([1.0])
  7. sess = tf.Session()
  8. print sess.run(tf.nn.bias_add(a, b))
  9. #print sess.run(tf.nn.bias_add(a,c)) error
  10. print ("##################################")
  11. print sess.run(tf.add(a, b))
  12. print ("##################################")
  13. print sess.run(tf.add(a, c))

然后执行:

  1. python /home/ubuntu/bias_add.py

执行结果:

3 个 3x2 维张量。您也可以尝试修改源代码看看输出结果有什么变化?

tf.reduce_mean

  1. reduce_mean(
  2. input_tensor,
  3. axis=None,
  4. keep_dims=False,
  5. name=None,
  6. reduction_indices=None
  7. )

功能说明:

计算张量 input_tensor 平均值

参数列表:

参数名 必选 类型 说明
input_tensor 张量 输入待求平均值的张量
axis None、0、1 None:全局求平均值;0:求每一列平均值;1:求每一行平均值
keep_dims Boolean 保留原来的维度,降为 1
name string 运算名称
reduction_indices None 和axis等价,被弃用

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 reduce_mean.py,内容可参考:

示例代码:/home/ubuntu/reduce_mean.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. import numpy as np
  4. initial = [[1.,1.],[2.,2.]]
  5. x = tf.Variable(initial,dtype=tf.float32)
  6. init_op = tf.global_variables_initializer()
  7. with tf.Session() as sess:
  8. sess.run(init_op)
  9. print sess.run(tf.reduce_mean(x))
  10. print sess.run(tf.reduce_mean(x,0)) #Column
  11. print sess.run(tf.reduce_mean(x,1)) #row

然后执行:

  1. python /home/ubuntu/reduce_mean.py

执行结果:

  1. 1.5
  2. [ 1.5 1.5]
  3. [ 1. 2.]

您也可以尝试修改源代码看看输出结果有什么变化?

tf.squared_difference

  1. squared_difference(
  2. x,
  3. y,
  4. name=None
  5. )

功能说明:

计算张量 x、y 对应元素差平方

参数列表:

参数名 必选 类型 说明
x 张量 是 half, float32, float64, int32, int64, complex64, complex128 其中一种类型
y 张量 是 half, float32, float64, int32, int64, complex64, complex128 其中一种类型
name string 运算名称

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 squared_difference.py,内容可参考:

示例代码:/home/ubuntu/squared_difference.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. import numpy as np
  4. initial_x = [[1.,1.],[2.,2.]]
  5. x = tf.Variable(initial_x,dtype=tf.float32)
  6. initial_y = [[3.,3.],[4.,4.]]
  7. y = tf.Variable(initial_y,dtype=tf.float32)
  8. diff = tf.squared_difference(x,y)
  9. init_op = tf.global_variables_initializer()
  10. with tf.Session() as sess:
  11. sess.run(init_op)
  12. print sess.run(diff)

然后执行:

  1. python /home/ubuntu/squared_difference.py

执行结果:

  1. [[ 4. 4.]
  2. [ 4. 4.]]

您也可以尝试修改源代码看看输出结果有什么变化?

tf.square

  1. square(
  2. x,
  3. name=None
  4. )

功能说明:

计算张量对应元素平方

参数列表:

参数名 必选 类型 说明
x 张量 是 half, float32, float64, int32, int64, complex64, complex128 其中一种类型
name string 运算名称

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 square.py,内容可参考:

示例代码:/home/ubuntu/square.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. import numpy as np
  4. initial_x = [[1.,1.],[2.,2.]]
  5. x = tf.Variable(initial_x,dtype=tf.float32)
  6. x2 = tf.square(x)
  7. init_op = tf.global_variables_initializer()
  8. with tf.Session() as sess:
  9. sess.run(init_op)
  10. print sess.run(x2)

然后执行:

  1. python /home/ubuntu/square.py

执行结果:

  1. [[ 1. 1.]
  2. [ 4. 4.]]

您也可以尝试修改源代码看看输出结果有什么变化?

TensorFlow 相关类理解

任务时间:时间未知

tf.Variable

  1. __init__(
  2. initial_value=None,
  3. trainable=True,
  4. collections=None,
  5. validate_shape=True,
  6. caching_device=None,
  7. name=None,
  8. variable_def=None,
  9. dtype=None,
  10. expected_shape=None,
  11. import_scope=None
  12. )

功能说明:

维护图在执行过程中的状态信息,例如神经网络权重值的变化。

参数列表:

参数名 类型 说明
initial_value 张量 Variable 类的初始值,这个变量必须指定 shape 信息,否则后面 validate_shape 需设为 False
trainable Boolean 是否把变量添加到 collection GraphKeys.TRAINABLE_VARIABLES 中(collection 是一种全局存储,不受变量名生存空间影响,一处保存,到处可取)
collections Graph collections 全局存储,默认是 GraphKeys.GLOBAL_VARIABLES
validate_shape Boolean 是否允许被未知维度的 initial_value 初始化
caching_device string 指明哪个 device 用来缓存变量
name string 变量名
dtype dtype 如果被设置,初始化的值就会按照这个类型初始化
expected_shape TensorShape 要是设置了,那么初始的值会是这种维度

示例代码:

现在您可以在 /home/ubuntu 目录下创建源文件 Variable.py,内容可参考:

示例代码:/home/ubuntu/Variable.py
  1. #!/usr/bin/python
  2. import tensorflow as tf
  3. initial = tf.truncated_normal(shape=[10,10],mean=0,stddev=1)
  4. W=tf.Variable(initial)
  5. list = [[1.,1.],[2.,2.]]
  6. X = tf.Variable(list,dtype=tf.float32)
  7. init_op = tf.global_variables_initializer()
  8. with tf.Session() as sess:
  9. sess.run(init_op)
  10. print ("##################(1)################")
  11. print sess.run(W)
  12. print ("##################(2)################")
  13. print sess.run(W[:2,:2])
  14. op = W[:2,:2].assign(22.*tf.ones((2,2)))
  15. print ("###################(3)###############")
  16. print sess.run(op)
  17. print ("###################(4)###############")
  18. print (W.eval(sess)) #computes and returns the value of this variable
  19. print ("####################(5)##############")
  20. print (W.eval()) #Usage with the default session
  21. print ("#####################(6)#############")
  22. print W.dtype
  23. print sess.run(W.initial_value)
  24. print sess.run(W.op)
  25. print W.shape
  26. print ("###################(7)###############")
  27. print sess.run(X)

然后执行:

  1. python /home/ubuntu/Variable.py

完成

任务时间:时间未知

恭喜,您已完成本实验内容

您可进行更多 TensorFlow 的系列教程:

  • TensorFlow - 线性回归
  • TensorFlow - 基于 CNN 数字识别

关于 TensorFlow 的更多资料可参考 TensorFlow 官网

TensorFlow — 相关 API的更多相关文章

  1. TensorFlow - 相关 API

    来自:https://cloud.tencent.com/developer/labs/lab/10324 TensorFlow - 相关 API TensorFlow 相关函数理解 任务时间:时间未 ...

  2. tensorflow相关API的学习

    学习目录 1.tensorflow相关函数理解 (1)tf.nn.conv2d (2)tf.nn.relu (3)tf.nn.max_pool (4)tf.nn.dropout (5)tf.nn.si ...

  3. 主要DL Optimizer原理与Tensorflow相关API

    V(t) = y*V(t-1) + learning_rate*G(x) x(t) = x(t-1) - V(t) 参考:https://arxiv.org/pdf/1609.04747.pdf DL ...

  4. 开源框架---通过Bazel编译使用tensorflow c++ API 记录

    开源框架---通过Bazel编译使用tensorflow c++ API 记录 tensorflow python API,在python中借用pip安装tensorflow,真的很方便,几句指令就完 ...

  5. OpenGL FrameBufferCopy相关Api比较(glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D)

    OpenGL FrameBufferCopy相关Api比较 glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D 标题所述 ...

  6. QQ音乐的各种相关API

    QQ音乐的各种相关API 分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报 基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证 ...

  7. addChildViewController相关api深入剖析

    注:本文根据个人的实践和理解写成,若有不当之处欢迎斧正和探讨! addChildViewController是一个从iOS5开始支持的api接口,相关的一系列的接口是用来处理viewcontrolle ...

  8. [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. 关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题

    关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题 在官方AQPlayer Demo 和 aqofflinerender中.都用了Audi ...

随机推荐

  1. Spark 分布式环境--连接独立集群管理器

    Spark 分布式环境:master,worker 节点都配置好的情况下 : 却无法通过spark-shell连接到 独立集群管理器 spark-shell --master spark://soyo ...

  2. java笔记线程方式1线程终端与停止

    public final void stop():让线程停止,过时了,但是还可以使用.public void interrupt():中断线程. 把线程的状态终止,并抛出一个InterruptedEx ...

  3. 清北考前刷题da5下午好

    /* (4,1)*(3,1)*(2,1)的话1变成2然后一直是2 2变成1然后变成3 3变成1然后变成4 4变成1 */ #include<iostream> #include<cs ...

  4. 贪心 FZU 2013 A short problem

    题目传送门 /* 题意:取长度不小于m的序列使得和最大 贪心:先来一个前缀和,只要长度不小于m,从m开始,更新起点k最小值和ans最大值 */ #include <cstdio> #inc ...

  5. 299 Bulls and Cows 猜数字游戏

    你正在和你的朋友玩猜数字(Bulls and Cows)游戏:你写下一个数字让你的朋友猜.每次他猜测后,你给他一个提示,告诉他有多少位数字和确切位置都猜对了(称为”Bulls“, 公牛),有多少位数字 ...

  6. headroom.js使用

    为页面顶部多留些空间.在不需要页头时将其隐藏 需要添加的css代码 .headroom { transition: transform 200ms linear; } .headroom--pinne ...

  7. Scala-基础-函数(2)

    import junit.framework.TestCase //函数(2) //知识点-默认参数,带名参数,变长参数,过程 class Demo1 extends TestCase { //测试方 ...

  8. WordPress强制跳转https教程

    在互联网火热的今天,安全问题显得越来越重要,为了用户信息安全,很多热门网站都启用了https 有小伙伴就问:我启用了https,为什么访问的时候显示的还是http呢? 其实,有时候并不是因为我们ssl ...

  9. 调度kettle使用taskctl我该怎么部署

    转载自: http://www.taskctl.com/forum/detail_133.html 最近在QQ群看到有小伙伴在问用taskctl调度kettle,都要安装些什么呢?都支持哪些平台上的k ...

  10. 329.-io流(字符-练习-复制文本文件二)

    //每次读取的字节长度,一般都是1024的倍数 private static final int BUF_SIZE = 1024; public static void main(String[] a ...