我正在嘗試將一個簡單的代碼片段從 TensorFlow 1.x 轉換為 TensorFlow 2:# ########## TensorFlow 1.x code: ##########import numpy as npimport tensorflow as tfcoefficients = 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.placeholder以及feed_dict這兩者如何交互。TF2 中是否簡單地避免使用占位符?
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
通常,您使用@tf.function占位符并將其轉換為函數參數。sess.runthen 被替換為調用該函數。過去用于返回操作的東西(比如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已棄用,因此升級該部分將需要更多更改。
添加回答
舉報
0/150
提交
取消