目录
矩阵生成
tf.ones | tf.zeros
tf.ones_like | tf.zeros_like
tf.fill
print(sess.run(tf.fill([2,3],2)))
#[[2 2 2],
# [2 2 2]]
tf.constant
tf.random_normal | tf.truncated_normal | tf.random_uniform
tf.get_variable
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的变量,则调用那个变量;如果没有,则根据输入的参数重新创建一个名字为name的变量。在众多的输入参数中,有几个是我已经比较了解的,下面来一一讲一下
- name: 这个不用说了,变量的名字
- shape: 变量的形状,[]表示一个数,[3]表示长为3的向量,[2,3]表示矩阵或者张量(tensor)
- dtype: 变量的数据格式,主要有tf.int32, tf.float32, tf.float64等等
- initializer: 初始化工具,有tf.zero_initializer, tf.ones_initializer, tf.constant_initializer, tf.random_uniform_initializer, tf.random_normal_initializer, tf.truncated_normal_initializer等
矩阵变换
tf.shape
tf.expand_dims
tf.pack
tf.pack(values, axis=0, name=”pack”)
Packs a list of rank-R tensors into one rank-(R+1) tensor 将一个R维张量列表沿着axis轴组合成一个R+1维的张量。
# 'x' is [1, 4]
# 'y' is [2, 5]
# 'z' is [3, 6]
pack([x, y, z]) => [[1, 4], [2, 5], [3, 6]] # Pack along first dim.
pack([x, y, z], axis=1) => [[1, 2, 3], [4, 5, 6]]
tf.concat
tf.sparse_to_dense
tf.random_shuffle
tf.argmax | tf.argmin
tf.equal
tf.cast
tf.matmul
用来做矩阵乘法。若a为lm的矩阵,b为mn的矩阵,那么通过tf.matmul(a,b) 结果就会得到一个l*n的矩阵 不过这个函数还提供了很多额外的功能。我们来看下函数的定义:
matmul(a, b,
transpose_a=False, transpose_b=False,
a_is_sparse=False, b_is_sparse=False,
name=None):
可以看到还提供了transpose和is_sparse的选项。
如果对应的transpose项为True,例如transpose_a=True,那么a在参与运算之前就会先转置一下。
而如果a_is_sparse=True,那么a会被当做稀疏矩阵来参与运算。