【发布时间】:2018-09-02 13:39:57
【问题描述】:
我是 tensorflow 的新手,我正在关注这个教程,它正在做变分 droptout 来训练 NN https://gist.github.com/VikingPenguinYT/665769ba03115b1a0888893eaf1d4f13
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(10000):
sess.run(train_step, {model_X: X, model_y: y})
if i % 100 == 0:
mse = sess.run(model_mse, {model_X: X, model_y: y})
print("Iteration {}. Mean squared error: {:.4f}.".format(i, mse))
# Sample from the posterior.
n_post = 1000
Y_post = np.zeros((n_post, X_pred.shape[0]))
for i in range(n_post):
Y_post[i] = sess.run(model_pred, {model_X: X_pred})
我的问题是:
(1) 我现在使用 tf.Session 来训练和评估 NN。但是如果在 sess 之外(例如,从 #Sample from theterior 开始的行),优化器训练的参数值是否仍然可用? (它们是全局变量还是 sess 中的局部变量)。或者它仍然可用,因为它使用的是相同的会话? 如果我想使用这些参数来评估我的目标函数,我总是可以简单地用 sess.run 调用它们?如果我的代码中有多个训练步骤怎么办?
(2) 此代码使用所有训练数据进行一次更新,对吗?我可以切换到新元吗? (为什么这里使用 AdmaOptimizer 而不是 Backprop?) 对于这个变分 dropout 问题,训练和测试会话都保留了 dropout。 AdmaOptimizer 和 Backprop 是否能够自动将 dropout 考虑在内? (虽然看起来很聪明......)或者如果我使用 Backprop 会有问题吗?
(3) 训练过程仅通过 tf.variables 更新定义的变量(本例中为 M 和 m)对吗?那些中间变量呢? (本例中为 W)。
谢谢!
【问题讨论】:
标签: python tensorflow machine-learning