我最近开始使用tensorflow,并尝试了一些模拟数据的线性回归模型.我有以下代码,我正在训练两个变量w和b(我使用numpy随机初始化)使用 GradientDescentOptimizer.模型完成训练后,我想查看这些变量,看看它们与实际值的接近程度.(我已经省略了代码的其他部分,因为它们与问题无关).因此,当会话退出时with tf.Session()...,我打开默认会话sess = tf.Session()并尝试使用sess.run(w)但是我受到了欢迎Attempting to use uninitialized value train_weights.这是预料之中的.所以我想使用sess.run(tf.global_variables_initializer())但只是简单地初始化w回到开始的值.所以问题是 - 如果变量在张量流会话中被更改后如何访问变量的最终值,因为会话已经关闭
_ = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(_)
for epoch in range(n_epochs):
for batch_pos in range(num_batches):
x_batch = X[batch_ind[batch_pos]:batch_ind[batch_pos+1]]
y_batch = Y[batch_ind[batch_pos]:batch_ind[batch_pos+1]]
sess.run(optimizer, feed_dict = {x_train_batch: x_batch,\
y_train_batch: y_batch})
cost_ = sess.run(cost, feed_dict = {x_train_batch: x_batch,\
y_train_batch: y_batch})
if (epoch)%display_rate == 0:
print('Epoch:', epoch+1, 'Cost: ', cost_)
sess = tf.Session()
# sess.run(tf.global_variables_initializer())
sess.run(w)
Run Code Online (Sandbox Code Playgroud)
如果您已经关闭了会话,则无法从中访问权重.
一般来说有两种方法:
1)不要关闭会话(不要使用带有tf.Session()的构造作为sess);
2)在会话结束时使用保护程序:
saver = tf.train.Saver()
saver.save(sess, 'filename.chkp')
Run Code Online (Sandbox Code Playgroud)
然后你就可以访问模型了:
sess = tf.Session()
saver = tf.train.Saver()
saver.restore(sess, 'filename.chkp')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |