1.constant创建常量,用法如下
tf.constant(
value, # 值可以是数字,也可以是列表
dtype=None, # 数据类型
shape=None, # 常量的形状,可选
name='Const', # 常量的名字,可选
verify_shape=False # 常量的形状是否可以被更改,默认不可更改
)
创建的常量,要获取其结果,需要用到会话,如下例子
import tensorflow as tf
tensor = tf.constant([[1,2,3]]) # 得到的结果为张量Tensor
# 如上定义的常量,需要查看结果必须定义会话Session
sess = tf.Session()
with sess.as_default():
print('result:',tensor.eval()) # result: [[1 2 3]]
2.Session两种打开方式例子
import tensorflow as tf
import numpy as np
# tf.constant创建常量,
matrix1 = tf.constant([[1,2,3]]) # 得到的结果为张量Tensor
#print(matrix1) # Tensor("Const:0", shape=(1, 3), dtype=int32),即表示1行3列的矩阵[1,2,3]
matrix2 = tf.constant([[4],
[5],
[6]])
print(matrix2) #Tensor("Const_1:0", shape=(3, 1), dtype=int32),即表示3行1列的矩阵[4,5,6]T
product = tf.matmul(matrix1,matrix2) # 矩阵乘法
#print(product) # Tensor("MatMul:0", shape=(1, 1), dtype=int32)
# 如上定义的常量,需要查看结果必须定义会话Session
# 方法1
sess = tf.Session()
result1 = sess.run(product) # 执行计算图
print('方法1')
print(result1) # [[32]] 即[1,2,3] * [4,5,6]T = 1*4 + 2*5+3*6 = 32
sess.close()
# 方法2
with tf.Session() as sess:
result2 =sess.run(product) # 执行计算图
print('方法2')
print(result2) # [[32]]
3.两种打开方式的区别
上述方法1中需手动关闭会话,方法2,由于会话在with中,因此会自动关闭。
4.TensorFlow的两种方式:Session.run
和 Tensor.eval的区别
对于一个张量Tensor x来说,使用x.eval()等价于:tf.get_default_session().run(x)
最主要区别在于run()可以在同一步获取多个tensor中的值