tf.Tensor
目的
- 当做另一个op的输入,各个op通过Tensor连接起来,形成数据流。
- 可以使用t.eval()得到Tensor的值。。。
属性
- 数据类型,float32, int32, string等
- 形状
tf.Tensor一般是各种op操作后产生的变量,如tf.add,tf.log等运算,它的值是不可以改变的,没有assign()方法。
维度
- 0 标量
- 1 向量
- 2 矩阵
- 3 3阶张量
- n n阶张量
创建0维
1 | string_scalar = tf.Variable("Elephat", tf.string) |
创建1维
需要列表作为初值
1 | string_vec = tf.Variable(["Elephat"], tf.string) |
创建2维
至少需要包含一行和一列
1 | bool_mat = tf.Variable([[True], [False]], tf.bool) |
获取维度
1 | tf.rank(tensor) |
切片
0阶标量不需要索引,本身就是一个数字
1阶向量,可以传递一个索引访问某个数字
2阶矩阵,可以传递两个数字,返回一个标量,传递1个数字返回一个向量。
可以使用:访问,表示不操作该维度。
获得Tensor的shape
- tf.Tensor.shape
- tf.shape(tensor) # 返回tensor的shape
- tf.Tensor.get_shape()
改变tensor的shape
api
tf.reshape(tensor, shape, name=None)
- tensor 输入待操作tensor
- shape reshape后的shape
代码示例
1 | # t = [1, 2, 3, 4, 5, 6, 7, 8, 9] |
增加数据维度
API
tf.expand_dims(input, axis=None, name=None, dim=None)
代码示例
1 | import tensorflow as tf |
改变数据类型
API
tf.cast(x, dtype, name=None)
- x # 待转换数据
- dtype # 待转换数据类型
代码示例
1 | x = tf.constant([1.8, 2.2], dtype=tf.float32) |
评估张量
tf.Tensor.eval() 返回一个与Tensor内容相同的numpy数组
代码示例
1 | constant = tf.constant([1, 2, 3]) |
特殊类型
- tf.Variable 和tf.Tensor还不一样,点击查看tf.Variable详细介绍
- tf.constant
- tf.placeholder
- tf.SparseTensor
tf.placeholder
API
返回一个Tensor
tf.placeholder(dtype, shape=None, name = None)
- dtype # 类型
- shape # 形状
代码示例
1 | import tensorflow as tf |
tf.constant
api
tf.constant(values, dtype=None, shape=None, name=‘Const’, verify_shape=False)
返回一个constant的Tensor。
- values # 初始值
- dtype # 类型
- shape # 形状
- name # 可选
- verify_shape
代码示例
1 | tensor = tf.constant([1, 2, 3, 4, 5, 6]) |
tf.Variable
api
tf.Variable.__init__(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, …)
代码示例
1 | tensor1 = tf.Variable([[1,2], [3,5]]) |
创建常量Tensor
-
tf.ones(shape, dtype=tf.float32, name=None)
-
tf.zeros(shape, dtype=tf.float32, name=None)
-
tf.fill(shape, value, name=None)
-
tf.constant(value, dtype=None, shape=None, name=‘Const’)
-
tf.ones_like(tensor, dtype=None, name=None)
-
tf.zeros_like(tensor, dtype=None, name=None)
-
tf.linspace()
创建随机Tensor
- tf.random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None)
https://www.tensorflow.org/versions/r1.8/api_docs/python/tf/random_uniform - tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
均值为mean,方差为stddev的正态分布
https://www.tensorflow.org/versions/r1.8/api_docs/python/tf/random_normal - tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
均值为mean,方差为stddev的正态分布,保留[mean-2*stddev, mean+2*stddev]之内的随机数。 - tf.random_shuffle(value, seed=None, name=None)
对value的第一维重新排列
代码示例
1 | import tensorflow as tf |