Python 如何将提要和占位符迁移到TensorFlow 2?
我正在尝试将一个简单的片段从TensorFlow 1.x转换为TensorFlow 2:Python 如何将提要和占位符迁移到TensorFlow 2?,python,tensorflow,tensorflow2.0,Python,Tensorflow,Tensorflow2.0,我正在尝试将一个简单的片段从TensorFlow 1.x转换为TensorFlow 2: TensorFlow 1.x代码:########## 将numpy作为np导入 导入tensorflow作为tf 系数=np.数组([[1.],[-10.],[25.])) w=tf.Variable(0,dtype=tf.float32) x=tf.placeholder(tf.float32[3,1]) 成本=(x[0][0]*(w**2))+(x[1][0]*w)+(x[2][0]) 列车=tf.列
TensorFlow 1.x代码:##########
将numpy作为np导入
导入tensorflow作为tf
系数=np.数组([[1.],[-10.],[25.]))
w=tf.Variable(0,dtype=tf.float32)
x=tf.placeholder(tf.float32[3,1])
成本=(x[0][0]*(w**2))+(x[1][0]*w)+(x[2][0])
列车=tf.列车.梯度降阶器(0.05).最小化(成本)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
init=tf.global_variables_initializer()
session=tf.session()
会话运行(init)
对于范围(100)内的i:
session.run(train,feed_dict={x:coverties})
打印(会话运行(w))
TF2中已经替换了很多旧API(例如,
GradientDescentOptimizer
替换为keras.optimizers.SGD
),我能够找到如何重构大部分代码的方法,但我不知道如何重构tf.placeholder
和feed\u dict
,以及这两者如何交互。TF2中是否完全避免使用占位符?通常使用@tf.function
并将占位符转换为函数参数sess.run
然后被替换为调用该函数。过去用于返回ops的内容(如最小化)现在只在函数内部调用。以下是您转换的代码片段:
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
已被弃用,因此升级该部件将需要更多的更改