【问题标题】:How to get the trained weights created by a model如何获得模型创建的训练权重
【发布时间】:2017-02-21 09:06:53
【问题描述】:

我实现了一个简单的逻辑回归。在运行训练算法之前,我为我的权重创建了一个占位符,我将所有权重初始化为 0...

W = tf.Variable(tf.zeros([784, 10]))

正确初始化所有变量后,逻辑回归就实现了(我已经测试并正确运行)...

for epoch in range(training_epochs):
    avg_cost = 0
    total_batch = int(mnist.train.num_examples/batch_size)
    # loop over all batches
    for i in range(total_batch):
        batch_xs, batch_ys = mnist.train.next_batch(batch_size)
        _, c = sess.run([optimizer, cost], feed_dict={x: batch_xs, y: batch_ys})

        # compute average loss
        avg_cost += c / total_batch
    # display logs per epoch step
    if (epoch + 1) % display_step == 0:
        print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(avg_cost))

我的问题是,我需要提取模型中使用的权重。我将以下内容用于我的模型...

pred = tf.nn.softmax(tf.matmul(x, W) + b)  # Softmax

我尝试通过以下方式提取...

var = [v for v in tf.trainable_variables() if v.name == "Variable:0"][0]
print(sess.run(var[0]))

我认为训练后的权重将位于 tf.training_variables(),但是当我运行 print 函数时,我得到一个零数组。

我想要的是所有的权重集。但由于某种原因,我得到的是零数组,而不是分类器的实际权重。

【问题讨论】:

    标签: python machine-learning tensorflow


    【解决方案1】:

    更简单,只需使用 run 函数评估权重,您将返回带有值的 numpy 数组:

    sess.run([x, W, b])
    

    【讨论】:

      【解决方案2】:

      变量W 应指训练后的权重。请尝试简单地做:sess.run(W)

      【讨论】:

        猜你喜欢
        • 2017-10-07
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        • 2018-09-24
        • 2018-11-03
        • 1970-01-01
        • 2018-07-28
        • 2020-05-11
        相关资源
        最近更新 更多