tensorflow运行mnist的一些常用函数整理(1)
最近在tensorflow环境下用CNN来实现mnist,里面设计了一些tensorflow的函数,在之后的学习中肯定会经常使用,因此记录整理下来。
函数如下,现将函数名列在此,后面进行详细分析:
tf.truncated_naomal()
tf.Variable()
tf.reshape()
tf.matmul()
tf.muitiply()
tf.reduce_sum()
tf.reduce_mean()
具体分析:
tf.truncated_normal(shape, mean, stddev)
shape表示生成张量的维度
mean是均值
stddev是标准差
这个函数产生正态分布,均值和标准差自己设定。这是一个截断的产生正太分布的函数,就是说产生正态分布的值如果与均值的差值大于两倍的标准差,那就重新生成,和一 般的正太分布的产生随机数据比起来,这个函数产生的随机数与均值的差距不会超过两倍的标准差
tf.Variable(initializer,name)
参数initializer是初始化参数
name是可自定义的变量名称
例如 v2=tf.Variable(tf.constant(2),name='v2')
tf.reshape(tensor, shape, name=None)
第1个参数为被调整维度的张量
第2个参数为要调整为的形状,注意shape里最多有一个维度的值可以填写为-1,表示自动计算此维度
x = tf.placeholder("float", shape=[None, 784]) x_image = tf.reshape(x, [-1, 28, 28, 1])
tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
将矩阵a乘于矩阵b-------矩阵相乘
transpose_a: 如果为真, a则在进行乘法计算前进行转置。
transpose_b: 如果为真, b则在进行乘法计算前进行转置。
adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。
adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。
a_is_sparse: 如果为真, a会被处理为稀疏矩阵。
b_is_sparse: 如果为真, b会被处理为稀疏矩阵。
name: 操作的名字(可选参数)
注意:1 输入必须是矩阵(或者是张量秩 >2的张量,表示成批的矩阵),并且其在转置之后有相匹配的矩阵尺寸
2 两个矩阵必须都是同样的类型,支持的类型如下:float16, float32, float64, int32, complex64, complex128
tf.multiply(x, y, name=None)
x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
y: 一个类型跟张量x相同的张量。
1 multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法
2 两个相乘的数必须有相同的数据类型,不然就会报错
tf.reduce_sum(tensor, axis = None, keep_dims = False, name = None)
此函数用于降纬相加,
tensor-输入的张量
axis-要求和的 rank,如果为 none,则表示所有 rank 都要求和
keep_dims-如果为真,则求和之后不降纬
心得:如果输入张量的维度为n,则axis的取值为0 - (n-1)
例如:用下面代码进行测试
import tensorflow as tf import numpy as np #生成形状为2*2*3的三维数据 x = np.asarray([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) x_p = tf.placeholder(tf.int32,[2,2,3]) #修改下面的值 #axis=0 对第一纬进行相加,降纬 #axis=1 对第二纬进行相加,降纬 #axis=2 对第三纬进行相加,降纬 #axis=[0,1,2] 对第所有纬进行相加,降纬 #axis=None 效果同上,降纬 #axis=0 keep_dims = True 对第一纬进行相加,不降纬 y = tf.reduce_sum(x_p,0) with tf.Session() as sess: y = sess.run(y,feed_dict={x_p:x}) print y
输出结果依次是:
tf.reduce_mean(tensor, axis = None, keep_dims = False, name = None)
此函数与tf.reduce_sum()类似
axis-要求平均的 rank,如果为 none,则表示所有 rank 都要求平均
keep_dims-如果为真,则求和之后不降纬
心得:如果输入张量的维度为n,则axis的取值为0 - (n-1)
例如:用下面代码进行测试
import tensorflow as tf import numpy as np #生成形状为2*2*3的三维数据 x = np.asarray([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) x_p = tf.placeholder(tf.int32,[2,2,3]) #修改下面的值 #axis=0 对第一纬进行求平均,降纬 #axis=1 对第二纬进行求平均,降纬 #axis=2 对第三纬进行求平均,降纬 #axis=[0,1,2] 对第所有纬进行求平均,降纬 #axis=None 效果同上,降纬 #axis=0 keep_dims = True 对第一纬进行求平均,不降纬
y = tf.reduce_mean(x_p,0) #修改此处的参数 with tf.Session() as sess: y = sess.run(y,feed_dict={x_p:x}) print y
输出结果为:
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[中篇]
- 如何通过自定义MessageFilter的方式利用按键方式操作控件滚动条[附源代码]
- WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇)
- 《WCF技术剖析》博文系列汇总[持续更新中]
- 关于服务器的运行寿命 你应该知道这些事
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]
- WCF技术剖析之二十一: WCF基本的异常处理模式[上篇]
- 树大招风:细数2017年加密货币市场的幺蛾子事件
- 如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]
- 5个典型实例启发:什么是数据可视化
- 智能家居“智商”不够,能靠情商来补吗
- 大话MVP
- AngularJS in Action读书笔记1——扫平一揽子专业术语
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法