tensor : 张量,其实就是矩阵
Variable:变量的意思。一般用来表示图中的各计算参数,包括矩阵,向量等。
placeholder :同样是一个抽象的概念。用于表示输入输出数据的格式。告诉系统:这里有一个值/向量/矩阵,现在我没法给你具体数值,不过我正式运行的时候会补上的!
session:会话。我的理解是,session是抽象模型的实现者。为什么之前的代码多处要用到session?因为模型是抽象的嘛,只有实现了模型以后,才能够得到具体的值。同样,具体的参 数训练,预测,甚至变量的实际值查询,都要用到session,
矩阵生成
产生尺寸为shape的张量(tensor)
tf.ones(shape,type=tf.float32,name=None)
tf.zeros([2, 3], int32)
新建一个与给定的tensor类型大小一致的tensor,其所有元素为1和0
tf.ones_like(tensor,dype=None,name=None)
tf.zeros_like(tensor,dype=None,name=None)
创建一个形状大小为shape的tensor,其初始值为value
tf.fill(shape,value,name=None)
创建一个常量tensor,按照给出value来赋值,可以用shape来指定其形状。value可以是一个数,也可以是一个list。
tf.constant(value,dtype=None,shape=None,name=’Const’)
生成随机数tensor的。尺寸是shape
tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None)
random_normal: 正太分布随机数,均值mean,标准差stddev
truncated_normal:截断正态分布随机数,均值mean,标准差stddev,不过只保留[mean-2*stddev,mean+2*stddev]范围内的随机数
random_uniform:均匀分布随机数,范围为[minval,maxval]
如果在该命名域中之前已经有名字=name的变量,则调用那个变量;如果没有,则根据输入的参数重新创建一个名字为name的变量。
get_variable(name, shape=None, dtype=dtypes.float32, initializer=None,
regularizer=None, trainable=True, collections=None,
caching_device=None, partitioner=None, validate_shape=True,
custom_getter=None):
name: 这个不用说了,变量的名字
shape: 变量的形状,[]表示一个数,[3]表示长为3的向量,[2,3]表示矩阵或者张量(tensor)
dtype: 变量的数据格式,主要有tf.int32, tf.float32, tf.float64等等
矩阵变化
返回张量的形状。但是注意,tf.shape函数本身也是返回一个张量。而在tf中,张量是需要用sess.run(Tensor)来得到具体的值的。
tf.shape(Tensor)
为张量+1维。
tf.expand_dims(Tensor, dim)
将一个R维张量列表沿着axis轴组合成一个R+1维的张量。
tf.pack(values, axis=0, name=”pack”)
稀疏矩阵转密集矩阵
tf.sparse_to_dense
将张量沿着指定维数拼接起来。个人感觉跟前面的pack用法类似
tf.concat(concat_dim, values, name=”concat”)
沿着value的第一维进行随机重新排列
tf.random_shuffle(value,seed=None,name=None)
找到给定的张量tensor中在指定轴axis上的最大值/最小值的位置。
tf.argmax(input=tensor,dimention=axis)
判断两个tensor是否每个元素都相等。返回一个格式为bool的tensor
tf.equal(x, y, name=None):
将x的数据格式转化成dtype.例如,原来x的数据格式是bool,那么将其转化成float以后,就能够将其转化成0和1的序列。反之也可以
cast(x, dtype, name=None)
用来做矩阵乘法。若a为l*m的矩阵,b为m*n的矩阵,那么通过tf.matmul(a,b) 结果就会得到一个l*n的矩阵
tf.matmul
将tensor按照新的shape重新排列。
reshape(tensor, shape, name=None)
神经网络相关操作
tf.nn.embedding_lookup
将一个数字序列ids转化成embedding序列表示。
tf.trainable_variables
返回所有可训练的变量。在创造变量(tf.Variable, tf.get_variable 等操作)时,都会有一个trainable的选项,表示该变量是否可训练。这个函数会返回图中所有trainable=True的变量。
tf.gradients
用来计算导数。
tf.clip_by_global_norm
修正梯度值,用于控制梯度爆炸的问题。梯度爆炸和梯度弥散的原因一样,都是因为链式法则求导的关系,导致梯度的指数级衰减。为了避免梯度爆炸,需要对梯度进行修剪。
tf.nn.dropout
按概率来将x中的一些元素值置零,并将其他的值放大。
普通操作
tf.linspace(start,stop,num,name=None)
tf.range(start,limit=None,delta=1,name=’range’)
产生等差数列,
tf.assign
assign(ref, value, validate_shape=None, use_locking=None, name=None)
tf.assign是用来更新模型中变量的值的。ref是待赋值的变量,value是要更新的值
Keras
batch:深度学习的优化算法,说白了就是梯度下降。
epochs:指的就是训练过程中数据将被“轮”多少次,就这样。