在培训过程中,我使用train_test_split()将数据集拆分为训练和测试数据:
opencv-3.3.1
在训练并获得准确率之后,如何在整个数据集上应用此训练模型而不仅仅是测试数据?
答案 0 :(得分:0)
假设'OutPut'是神经网络的导出;因此,'InPut'是您可以提供数据的地方。然后,您使用您正在训练的相同会话运行网络.'OutPutData'将是计算结果。
OutPutData = session.run(OutPut, feed_dict={ InPut: Data})
答案 1 :(得分:0)
在恢复保存的变量之前,Tensorflow需要一个空的网络结构。如果你不喜欢这个,我推荐Keras。在这个例子中,着名的AlexNet被恢复以对一些图像进行分类。我希望它包含您需要的代码。
import time
import tensorflow as tf
from alexnet import AlexNet
from imageio import imread
import numpy as np
from caffe_classes import class_names
#Tensor
x = tf.placeholder(tf.float32, (None, 227, 227, 3))
probs = AlexNet(x, feature_extract=False)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
saver = tf.train.Saver()
save_file = './model.ckpt'
saver.restore(sess, save_file)
# Read Images
im1 = (imread(".\Example_Figs\weasel.png")[:, :, :3]).astype(np.float32)
im1 = im1 - np.mean(im1)
im1[:, :, 0], im1[:, :, 2] = im1[:, :, 2], im1[:, :, 0]
im2 = (imread(".\Example_Figs\poodle.png")[:, :, :3]).astype(np.float32)
im2 = im2 - np.mean(im2)
im2[:, :, 0], im2[:, :, 2] = im2[:, :, 2], im2[:, :, 0]
im3 = (imread(".\Example_Figs\dog.png")[:, :, :3]).astype(np.float32)
im3 = im3 - np.mean(im3)
im3[:, :, 0], im3[:, :, 2] = im3[:, :, 2], im3[:, :, 0]
im4 = (imread(".\Example_Figs\dog2.png")[:, :, :3]).astype(np.float32)
im4 = im4 - np.mean(im4)
im4[:, :, 0], im4[:, :, 2] = im4[:, :, 2], im4[:, :, 0]
im5 = (imread(".\Example_Figs\quail.jpg")[:, :, :3]).astype(np.float32)
im5 = im5 - np.mean(im5)
im5[:, :, 0], im5[:, :, 2] = im5[:, :, 2], im5[:, :, 0]
t = time.time()
output = sess.run(probs, feed_dict={x: [im1, im2, im3, im4, im5]})
# Print Output
for input_im_ind in range(output.shape[0]):
inds = np.argsort(output)[input_im_ind, :]
print("Image", input_im_ind)
for i in range(5):
print("%s: %.3f" % (class_names[inds[-1 - i]], output[input_im_ind, inds[-1 - i]]))
print()
print("Time: %.3f seconds" % (time.time() - t))
答案 2 :(得分:0)
请澄清整个数据集"的含义。你的意思是火车和测试装置连在一起吗?如果是这样,那么在分割之前,该集合位于数据和标签变量中。您可以将这些内容传递给 sess.run 执行此类操作以获得全部损失。您可能需要稍微调整它以使索引匹配。
feed = {data_pl: data, target_pl: labels,...}
loss = sess.run(tf_loss, feed_dict=feed)
如果您只是想要独立地训练/测试集错误,那么您已经这样做了,所以只需从上一个纪元运行中获取值。这些是已经完成的行。
test_loss,predictions,acc_np = sess.run([tf_loss,preds,tf_acc],feed_dict=feed)
train_loss = sess.run(tf_loss, feed_dict=feed)