【问题标题】:how to get an array of predictions from tensor flow classification model如何从张量流分类模型中获得一系列预测
【发布时间】:2018-10-16 19:08:11
【问题描述】:

我有以下分类模型。 我想得到一个类似于 y_t 的 numpy 数组,它是一个热编码的测试标签。但是我不断收到变量错误。

# Construct placeholders
with graph.as_default():
    inputs_ = tf.placeholder(tf.float32, [None, seq_len, n_channels], name = 'inputs')
    labels_ = tf.placeholder(tf.float32, [None, n_classes], name = 'labels')
    keep_prob_ = tf.placeholder(tf.float32, name = 'keep')
    learning_rate_ = tf.placeholder(tf.float32, name = 'learning_rate')

with graph.as_default():
    # (batch, 100, 3) --> (batch, 50, 6)
    conv1 = tf.layers.conv1d(inputs=inputs_, filters=6, kernel_size=2, strides=1, 
                             padding='same', activation = tf.nn.relu)
    max_pool_1 = tf.layers.max_pooling1d(inputs=conv1, pool_size=2, strides=2, padding='same')

with graph.as_default():
    # Flatten and add dropout
    flat = tf.reshape(max_pool_1, (-1, 6*6))
    flat = tf.nn.dropout(flat, keep_prob=keep_prob_)

    # Predictions
    logits = tf.layers.dense(flat, n_classes)

    # Cost function and optimizer
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=labels_))
    optimizer = tf.train.AdamOptimizer(learning_rate_).minimize(cost)

    # Accuracy
    correct_pred = tf.equal(tf.argmax(logits, 1), tf.argmax(labels_, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32), name='accuracy')

那我用测试集

with tf.Session(graph=graph) as sess:
    # Restore
    saver.restore(sess, tf.train.latest_checkpoint('bschkpnt-cnn'))

    for x_t, y_t in get_batches(X_test, y_test, batch_size):
        feed = {inputs_: x_t,
                labels_: y_t,
                keep_prob_: 1}

        batch_acc = sess.run(accuracy, feed_dict=feed)
        test_acc.append(batch_acc)
    print("Test accuracy: {:.6f}".format(np.mean(test_acc)))

y_t 是一个 nX3 颠簸数组。 我想得到一个类似格式的 y_pred

谢谢

【问题讨论】:

    标签: numpy tensorflow prediction


    【解决方案1】:

    soft = tf.nn.softmax(logits)

    这将是您的概率分布,使得sum(soft) = 1。此数组中的每个值都将指示模型对类的确定程度。

    pred = sess.run(soft, feed_dict=feed)

    打印(预测)

    所以基本上我所做的只是放置一个额外的softmax,因为你已经将它内置在你计算的损失中,你必须再次放置它来预测。然后我要求输出预测,然后再次输入feed_dict

    希望这有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2020-06-04
      • 2017-06-22
      • 2021-03-01
      • 2023-03-15
      • 1970-01-01
      • 2016-11-01
      相关资源
      最近更新 更多