def main(args): print("------------Start Evaluation-----------") print("CheckPoint : {}".format(FLAGS.ckpt_dir)) print("Network : {}".format(FLAGS.network)) print("data : {}".format(FLAGS.data)) print("---------------------------------------") # load dataset data = Load(FLAGS.data) batch_size = 3000 iteration = data.x_test.shape[0] // batch_size test = data.load_test(data.x_test, data.y_test, batch_size) test_iter = test.make_initializable_iterator() inputs, labels = test_iter.get_next() model_set = set_model(data.output_dim) model = eval(FLAGS.network)(model=model_set, name=FLAGS.network, out_dim=data.output_dim, lr=0, opt=None, trainable=False) logits = model.inference(inputs) logits = tf.identity(logits, name="output_logits") correct_prediction = tf.equal(tf.argmax(logits,1), tf.argmax(labels, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) tf.train.Saver() with tf.Session() as sess: sess.run([test_iter.initializer],feed_dict={data.test_placeholder: data.x_test, data.test_labels_placeholder: data.y_test}) utils = Utils(sess=sess) if utils.restore_model(FLAGS.ckpt_dir): avg_accuracy = 0 for i in range(iteration): test_accuracy = sess.run(accuracy) avg_accuracy += test_accuracy print("accuracy_{} : {}".format(i, test_accuracy)) print("average_accuracy : {}".format(avg_accuracy / iteration)) return else: return
def get_class(self, labels): l = [(np.sum(labels == i), i) for i in set(labels)] l = np.array(l, dtype=[('x', np.int16), ('y', np.int16)]) return np.sort(l, order='x')[::-1] def predit(self, x): topk = self.get_topk(x) c = self.get_class(topk[1]) confidence = c[0][0] / self.k clazz = c[0][1] return clazz, confidence if __name__ == '__main__': load = Load() train, test = load.load_train(2000), load.load_test(200) print('获取数据成功:', train[0].shape, train[1].shape) #预处理标签 train_labels, test_labels = np.argmax(train[1], axis=1), np.argmax(test[1], axis=1) classify = Classify(6, train[0], train_labels) ylabel, y_label = np.array([]), np.array([]) for test_item, i in zip(test[0], np.arange(0, test[0].shape[0])): x = test_item # print(x.shape) y = test_labels[i] # topk=classify.get_topk(x) # # # print('k:',topk[1])