我正在使用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]]
问题是我不知道如何使用这个预测函数并输入trainX值来获得预测。
答案 0 :(得分:0)
张量流的预测为您提供概率输出。从pred
获取最大概率的标签就足以获得网络的实用性。
pred = np.argmax(pred, axis=1)
在这种情况下,不是4,而是9。
其中np
是以import numpy as np
导入的numpy模块,但可以随tf.argmax(pred, 1)
替换它以使用tensorflow的argmax。
答案 1 :(得分:0)
你得到一个9,这与4非常相似。
model.predict
返回的是得分,而结果数组中的第5个值(第5个值是4,因为它以零开头)获得相对较高的分数(0.26) - 第二高) - 你的模型给出最后一位数(9)最高得分-0.76。这只是意味着你的分类器在这里有点不对 - 所以你应该考虑使用不同的分类器或者使用超参数。