您的位置:首页 > 其它

Tensorflow入门:Non-parametric Nearest Neighbor

2017-02-23 10:46 281 查看

Tensorflow入门:Non-parametric Nearest Neighbor

Tensorflow入门Non-parametric Nearest Neighbor
代码

要点

总结

代码

import numpy as np
import tensorflow as tf

# import MNIST data
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# input data
Xtr, Ytr = mnist.train.next_batch(5000)
Xte, Yte = mnist.test.next_batch(50)

# input data structure
xtr = tf.placeholder("float", [None, 784])
xte = tf.placeholder("float", [784])

# calculate distance between test samples and all train samples
distance = tf.reduce_sum(tf.abs(tf.add(xtr, tf.negative(xte))), reduction_indices= 1)

# find the nearest neighbor
pred = tf.arg_min(distance, 0)

init = tf.global_variables_initializer()

accuracy = 0.

with tf.Session() as sess:
sess.run(init)

for i in range(len(Xte)):
min_index = sess.run(pred, feed_dict={xtr: Xtr, xte: Xte[i]})
print("Test", i, "prediction:", np.argmax(Ytr[min_index]),
"true value: ", np.argmax(Yte[i]))
if(np.argmax(Ytr[min_index]) == np.argmax(Yte[i])):
accuracy += 1/len(Xte)
else:
print("error", i)

print(accuracy)


要点

需要tf.global_variables_initializer()对全局参数进行初始化

tensorflow里面形参和实参分开,distance和pred相当于C里面的函数,xtr和xte为形参,Xtr和Xte为实参

reduce_sum中的reduction_indices,0为竖着求和(每列求和),1为横着求和(每行求和)。先列后行的顺序。

实际参数中Xte[1]和Xte[1, :]作用一样

tf和np中均有argmax函数,具体区别还有探索。其中np.argmax可以不需要第二个参数。

总结

通过tensorflow中input_data读取数据在python2.7中失败,需要安装python3.5和对应的tensorflow。这是例子是Non-paramatric的nearest neighbor,没有训练过程,直接进行inference。通过改进,可以综合多个相同最近的样本值提高该模型的capacity。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Tensorflow