TensorFlow实践(16)——tf.enable_eager_execution方法

TensorFlow实践(16)——tf.enable_eager_execution方法

  • (一)前 言
  • (二)代码示例
  • (三)总 结

(一)前 言

在即将到来的TensorFlow2.0中将对部分机制做出重大调整,其中之一就是将原有的静态图机制(使用静态图的TensorFlow工作流程如下图所示)调整为动态图机制,这将使得TensorFlow更加灵活和易用,在2.0版本到来之前,我们可以通过 tf.enable_eager_execution() 方法来启用动态图机制。

Created with Raphaël 2.2.0 定义模型 生成计算图 创建会话 开始训练

(二)代码示例

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np

# 启用动态图机制
tf.enable_eager_execution()

# 设定学习率
learning_rate = 0.01
# 训练迭代次数
train_steps = 1000
# 构造训练数据
train_X = np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],[9.799],[6.182],[7.59],[2.167],[7.042],[10.791],[5.313],[7.997],[5.654],[9.27],[3.1]],dtype = np.float32)
train_Y = np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],[3.366],[2.596],[2.53],[1.221],[2.827],[3.465],[1.65],[2.904],[2.42],[2.94],[1.3]],dtype = np.float32)
# 输入数据
def network(data_x, data_y):
    X = data_x
    Y_ = data_y
    # 定义模型参数
    w = tf.Variable(tf.random_normal([1, 1]),name = "weight")
    b = tf.Variable(tf.zeros([1]), name = "bias")
    # 构建模型Y = weight*X + bias
    Y = tf.add(tf.matmul(X, w), b)
    # 定义损失函数
    loss = tf.reduce_sum(tf.pow((Y-Y_), 2))/17

    print(loss)

    return loss

optimizer = tf.train.AdadeltaOptimizer(learning_rate= 0.01)

# 训练1000次
for i in range(0, 1000):
    # 在动态图机制下,minimize要求接收一个函数
    optimizer.minimize((lambda: network(train_X, train_Y)))

# 输 出:
···
tf.Tensor(54.92399, shape=(), dtype=float32)
tf.Tensor(6.5630927, shape=(), dtype=float32)
tf.Tensor(4.874648, shape=(), dtype=float32)
tf.Tensor(23.35061, shape=(), dtype=float32)
tf.Tensor(27.08449, shape=(), dtype=float32)
tf.Tensor(55.983494, shape=(), dtype=float32)
tf.Tensor(18.76203, shape=(), dtype=float32)
···

(三)总 结

在这一节中我们对tf.enable_eager_execution() 方法进行了讲解,有任何的问题可以在评论区留言,我会尽快回复,谢谢支持!

你可能感兴趣的:(TensorFlow实践)