作者: Sam (甄峰) sam_code@hotmail.com
在Tensorflow学习中(for python),
常量是很常见的。想要创建一个Tensorflow Constant.
在Python接口下,使用:
tf.constant(
value,
dtype=None,
shape=None,
name='Const',
verify_shape=False
)
创建一个常量Tensor.
这个Tensor由参数dtype指定每个元素类型。
A. 参数value可以是一个常量值,也可以是一个List,其中List的元素类型为dtype.
B.
如果参数value是一个list,那么List的长度必须小于或等于参数shape隐含的元素数。在List长度小于指定元素数量的情况下,List中的最后一个元素将用来填充剩余的元素条目。
C. 参数shape是可选的。如果存在,则指定Tensor的尺寸。如果不存在,value 的
shape则被使用。
D. 如果参数dtype没有指定,则从给定的value推断类型。
例:
1. value为常量, shape未设定。
m6 = tf.constant(1)
print("m6:", sess.run(m6), "\t shape :", m6.shape)
结果:m6: 1 shape : ()
结果是一个常量, 常量没有shape.
2. value为常量, 并指定shape
m9 = tf.constant(value=1, shape=[2,2])
print("m9:", sess.run(m9), "\t shape :", m9.shape)
结果:m9: [[1 1] [1 1]] shape : (2, 2)
可以看到,Tensor的Shape以参数shape设定的为准。两行,两列。其中的元素值,使用了value指定的常量。
3. value为一维List,不指定shape.
m8 = tf.constant([1,2,3,4,5,6,7])
print("m8:", sess.run(m8), "\t shape :", m8.shape)
结果:m8: [1 2 3 4 5 6 7] shape : (7,)
一维List,没有shape, 则value的shape做为Tensor shape.
所以shape:(7, )
4. value为一维List, 指定Shape:
m10 = tf.constant(value=[1,2,3,4,5,6,7], shape=(2,4))
print("m10:", sess.run(m10), "\t shape :", m10.shape)
结果:m10: [[1 2 3 4] [5 6 7 7]] shape : (2, 4)
可以看到,指定了shape后,Tensor的shape就被定了。 此时是2行4列。
依次填充List的元素到其中,不够的话,重复最后一个元素。
5. value为多维List。不指定Shape:
m7 = tf.constant([[1],[2],[3],[4],[5]])
print("m7:", sess.run(m7), "\t shape :", m7.shape)
结果:m7: [[1] [2] [3] [4] [5]] shape : (5,
1)
没有shape, 则value的shape做为Tensor shape.