tf.ones(),tf,zeros(),tf.ones_like(),tf.zeros_like()等方法可以生成值为常量的张量。
1.全为零或全为一的张量初始化
可以利用tf.zeros()``tf.zeros_like()
生成零值张量
"""
其参考语法如下,其中shape为list或者tuple类型
tf.zeros(
shape,
dtype=tf.dtypes.float32,
name=None
)
"""
>>>import tensorflow as tf
>>>sess = tf.Session()
>>>zeros = tf.zeros([3,3,3])
>>>print(sess.run(zeros))
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]]
"""
另一个API则会输出与输入张量相同大小的全零张量,用于做mask时候十分有用:
tf.zeros_like(
input,
dtype=None,
name=None
)
"""
>>> tensor2 = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> zeros2 = tf.zeros_like(tensor2)
>>> print(sess.run(zeros2))
[[0 0 0 0]
[0 0 0 0]]
对于tf.ones()
和tf.ones_like()
也是一样的效果,一个可以输出给定形状的张量,一个可以生成与输入形状相同的全一张量:
>>> ones3 = tf.ones([2,2,2])
>>> print(sess.run(ones3))
[[[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]]]
# 生成与输入形状相同的全一张量
>>> tensor4 = tf.constant([1,2,3])
>>> ones4 = tf.ones_like(tensor4)
>>> print(sess.run(ones4))
[1 1 1]
TODO(RJJ, maybe 11.1): tf.fill().,tf.constant(), tf.linspace(),tf.range()
next blog:tf.math()