gpt4 book ai didi

python - 如何将 feed_dict 和占位符迁移到 TensorFlow 2?

转载 作者:行者123 更新时间:2023-12-04 03:56:43 27 4
gpt4 key购买 nike

我正在尝试将一个简单的片段从 TensorFlow 1.x 转换为 TensorFlow 2:

# ########## TensorFlow 1.x code: ##########
import numpy as np
import tensorflow as tf

coefficients = np.array([[1.], [-10.], [25.]])
w = tf.Variable(0, dtype=tf.float32)
x = tf.placeholder(tf.float32, [3, 1])
cost = (x[0][0] * (w**2)) + (x[1][0]*w) + (x[2][0])
train = tf.train.GradientDescentOptimizer(0.05).minimize(cost)

if __name__ == '__main__':
init = tf.global_variables_initializer()
session = tf.Session()
session.run(init)

for i in range(100):
session.run(train, feed_dict={x: coefficients})

print(session.run(w))

许多旧 API 在 TF2 中已被替换(例如 GradientDescentOptimizer 替换为 keras.optimizers.SGD),我能够弄清楚如何重构大部分我的代码,但我不知道如何重构 tf.placeholderfeed_dict 以及这两者如何交互。 TF2 中是否简单地避免了占位符的使用?

最佳答案

通常您使用 @tf.function 并将占位符转换为函数参数。 sess.run 然后被替换为调用该函数。过去用于返回操作的东西(如 minimize)现在只在函数内部调用。这是您转换后的代码段:

coefficients = tf.constant([[1.], [-10.], [25.]])
w = tf.Variable(0.0)

@tf.function
def train(x):
cost = (x[0][0] * (w**2)) + (x[1][0]*w) + (x[2][0])
tf.compat.v1.train.GradientDescentOptimizer(0.05).minimize(cost, var_list=[w])

for i in range(100):
train(coefficients)

print(w)

正如您提到的,train.GradientDescentOptimizer 已被弃用,因此升级该部分将需要进行更多更改。

关于python - 如何将 feed_dict 和占位符迁移到 TensorFlow 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63746371/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com