【问题标题】:How to get filter weights after training?训练后如何获得过滤器权重?
【发布时间】:2018-10-05 05:16:24
【问题描述】:

我想看看训练后过滤器采用了哪些值?如果在训练循环之后我提到 filter.eval() 它会得到过滤器在完成训练后采用的过滤器权重的值吗?我不认为我可以通过这种方式获得过滤器权重,因为过滤器变量调用了一个函数 weight_variable,该函数正在从正态分布中选择一些值。我认为在训练循环之后调用 filter.eval() 命令就像在训练之前打印过滤器一样。那么如何才能得到filter训练后采用的filter weights的值呢?

`def weight_variable(shape):
    initial = tf.truncated_normal(shape, mean=0, stddev=0.1)
    return tf.Variable(initial)
#network
x = tf.placeholder(tf.float32, [None, 
FLAGS.image_height*FLAGS.image_width])
y_ = tf.placeholder(tf.float32, [None, 2])



input=tf.reshape(x, 
    [-1,FLAGS.image_height,FLAGS.image_width,FLAGS.input_channel])
filter = weight_variable([FLAGS.filter_size, FLAGS.filter_size, 
    FLAGS.input_channel, FLAGS.filter_channel])
conv_out = tf.nn.sigmoid(conv2d(input, filter))

pool_out = max_pool(conv_out)


pool_list = pool_out.get_shape().as_list()
input_dim = pool_list[1]* pool_list[2]* pool_list[3]
pool_2D = tf.reshape(pool_out, [-1, input_dim])
W_fc = weight_variable([input_dim, 2])

logits = tf.matmul(pool_2D, W_fc)   #(batch_size,2)
y_conv=tf.nn.softmax(logits)`

检查正确的预测后应用训练循环

`
for i in range(max.training_step):
    #Check training and test accuracy
print(filter.eval())`

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    首先,确保您使用相同的图表和会话。图表包含模型的设置,会话包含模型中所有权重的值。如果您不使用相同的图表/会话,您将不会获得相同的权重。我认为在您的示例中,您使用了一些默认图形和会话。它应该可以工作,但如果你更明确地了解它们会更好。

    看起来filter 应该是张量。如果您执行print(filter),您应该会看到类似<tensor object shape=(..) > 的内容。在这种情况下,print(filter.eval()) 将返回正确的权重。

    如果没有,您可以使用图表来获取张量。 graph.get_tensor_by_name('filter_weights:0') 会给你一个你可以查看的张量。您可以从 tensorboard(来自图表)获取名称,也可以运行 tf.trainable_variables() 以获取图表中定义的所有变量的列表(并选择您想要的变量)。

    filter.eval() 的替代方法是 session.run(filter)。它们是等价的。

    【讨论】:

    • 我正在使用 tf.InteractiveSession。当您说您需要使用相同的图表和会话时,这意味着什么?
    • 我应该明确提及 tf.Graph 吗?在我的代码中,我没有在任何地方提到这个命令
    猜你喜欢
    • 2018-09-24
    • 2013-04-01
    • 2017-10-07
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多