如何获得模型

时间:2017-02-21 00:28:58

标签: python machine-learning tensorflow

我实施了一个简单的逻辑回归。在运行训练算法之前,我为我的权重创建了一个占位符,我将所有权重初始化为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函数时,我会得到一个零数组。

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

2 个答案:

答案 0 :(得分:1)

变量W应该引用训练的权重。请尝试简单地执行:sess.run(W)

答案 1 :(得分:1)

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

class tbl_users extends DataObject {

   private static $singular_name        = 'Sales Rep';
   private static $plural_name      = 'Sales Reps';

   ...
}