• 大小: 4KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Python
  • 标签: MNIST分类  KNN算法  

资源简介

python文件,使用pycharm即可运行。文本标注了详细的代码。

资源截图

代码片段和文件信息

# 加载mnist数据
import tensorflow as tf
import numpy as np
import random
from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets(‘MNIST_data‘one_hot=True)
# 设置属性
trainNum=60000  # 训练图片总数
testNum=10000   # 测试图片总数
trainSize=50000   # 训练时候用到的图片数量
testSize=5      # 测试时候用到的图片数量
k=4             # 距离最小的K个图片
# 生成不重复的随机数trainIndex:(500)testIndex:(5)
trainIndex=np.random.choice(55000trainSizereplace=False)
testIndex=np.random.choice(testNumtestSizereplace=False)
print(trainIndex.shapetestIndex.shape)
# 生成训练数据
trainData=mnist.train.images[trainIndex]
trainLabel=mnist.train.labels[trainIndex]
# 生成测试数据
testData=mnist.test.images[testIndex]
testLabel=mnist.test.labels[testIndex]
print(‘trainData.shape=‘trainData.shape)
print(‘trainLabel.shape=‘trainLabel.shape)
print(‘testData.shape=‘testData.shape)
print(‘testLabel.shape=‘testLabel.shape)
print(‘testLabel=‘testLabel)

# 设置训练数据的变量
trainDataInput=tf.placeholder(shape=[None784]dtype=tf.float32)
trainLabelInput=tf.placeholder(shape=[None10]dtype=tf.float32)
testDataInput=tf.placeholder(shape=[None784]dtype=tf.float32)
testLabelInput=tf.placeholder(shape=[None10]dtype=tf.float32)
# 使用曼哈顿距离来计算KNN距离
f1=tf.expand_dims(testDataInput1)      # 用expand_dim()来增加维度将原来的testDataInput扩展成三维的f1:(?1784)
f2=tf.subtract(trainDataInputf1)       # subtract()执行相减操作,即 trainDataInput-testDataInput 最终得到一个三维数据
f3=tf.reduce_sum(tf.abs(f2)reduction_indices=2)    # tf.abs()求数据绝对值tf.reduce_sum()完成数据累加,把数据放到f3中
# 执行
with tf.Session() as sess:
    p1=sess.run(f1feed_dict={testDataInput:testData[0:testSize]})  # 取testData中的前testSize个样本来代替输入的测试数据
    print(p1)
    print(‘p1=‘p1.shape)
    p2=sess.run(f2feed_dict={trainD

评论

共有 条评论