TensorFlow的Eager模型,也可以看做是动态图模型。该模型下不需要先构造图,然后再使用Session.run(),而是可以得到即时的反馈。这样在研究和开发时会更加符合直觉。
import numpy as np
import tensorflow as tf
设置eager mode
tf.enable_eager_execution()
tfe = tf.contrib.eager
定义常量
a = tf.constant(2)
print("a = %i"%a)
b = tf.constant(3)
print("b = %i"%b)
a = 2
b = 3
不使用session执行前向传播
c = a + b
print("a + b = %i"%c)
d = a * b
print("a * b = %i"%d)
a + b = 5
a * b = 6
与numpy兼容
a = tf.constant([[2.,1.],
[1.,0.]],dtype=tf.float32)
print("Tensor:\n a = %s"%a)
b = np.array([[3.,0.],
[5.,1.]],dtype=np.float32)
print("NumpyArray:\n b = %s"%b)
# tenosr与NumpyArray混合操作
c = a + b
print("a + b = %s"%c)
d = tf.matmul(a,b)
print("a * b = %s"%d)
Tensor:
a = tf.Tensor(
[[2. 1.]
[1. 0.]], shape=(2, 2), dtype=float32)
NumpyArray:
b = [[3. 0.]
[5. 1.]]
a + b = tf.Tensor(
[[5. 1.]
[6. 1.]], shape=(2, 2), dtype=float32)
a * b = tf.Tensor(
[[11. 1.]
[ 3. 0.]], shape=(2, 2), dtype=float32)
通过迭代的方式访问tensor
for i in range(a.shape[0]):
for j in range(a.shape[1]):
print(a[i][j])
tf.Tensor(2.0, shape=(), dtype=float32)
tf.Tensor(1.0, shape=(), dtype=float32)
tf.Tensor(1.0, shape=(), dtype=float32)
tf.Tensor(0.0, shape=(), dtype=float32)