1

我将 TF.LEARN 与 mnist 数据一起使用。我以 0.96 的准确度训练了我的神经网络,但现在我不确定如何预测一个值。

这是我的代码..

#getting mnist data to a zip in the computer.
mnist.SOURCE_URL = 'https://web.archive.org/web/20160117040036/http://yann.lecun.com/exdb/mnist/'
trainX, trainY, testX, testY = mnist.load_data(one_hot=True)


# Define the neural network
def build_model():
    # This resets all parameters and variables
    tf.reset_default_graph()
    net = tflearn.input_data([None, 784])
    net = tflearn.fully_connected(net, 100, activation='ReLU')
    net = tflearn.fully_connected(net, 10, activation='softmax') 
    net = tflearn.regression(net, optimizer='sgd', learning_rate=0.1, loss='categorical_crossentropy')
    # This model assumes that your network is named "net"    
    model = tflearn.DNN(net)
    return model

# Build the model
model = build_model()

model.fit(trainX, trainY, validation_set=0.1, show_metric=True, batch_size=100, n_epoch=8)

#Here is the problem 
#lets say I want to predict what my neural network will reply back if I put back the send value from my trainX 

the value of trainX[2] is 4

pred = model.predict([trainX[2]])
print(pred)
#What I get is 
[[2.6109733880730346e-05, 4.549271125142695e-06, 1.8098366126650944e-05, 0.003199575003236532, 0.20630565285682678, 0.0003870908112730831, 4.902480941382237e-05, 0.006617342587560415, 0.018498118966817856, 0.764894425868988]]

我想要的是-> 4

问题是我不确定如何使用这个预测函数并输入 trainX 值来获得预测。

4

2 回答 2

0

张量流的预测给你一个概率输出。获得最大概率的标签就足以获得pred网络的预测。

pred = np.argmax(pred, axis=1)

在这种情况下不是 4,而是 9。

numpy 模块在哪里np导入为import numpy as np,但可以随意将其替换tf.argmax(pred, 1)为使用 tensorflow 的 argmax。

于 2017-04-02T19:42:37.480 回答
0

您得到的是 9,这与 4 非常相似。

model.predict返回的是分数而结果数组中的第 5 个值(第 5 个值是 4,因为它从零开始)获得相对较高的分数(高 0.26 秒)-您的模型给出了最后一位数字 (9)最高分-0.76。这只是意味着您的分类器在这里有点错误 - 所以您应该考虑使用不同的分类器或使用超参数。

于 2017-04-02T19:44:45.047 回答