精华内容
下载资源
问答
  • 手写数字识别 python

    2018-06-27 11:11:32
    基于knn的手写数字识别,利用python实现, 能够运行,测试集和训练集都有
  • tensorflow手写数字识别python源码官网案例,带详细注释,适合刚初学tensorflow的mnist数据集训练识别, 相关链接: 手写数字识别 ----在已经训练好的数据上根据28*28的图片获取识别概率(基于Tensorflow,Python) ...
  • softmax手写数字识别 python代码

    千次阅读 2017-01-12 21:11:19
    softmax手写数字识别python代码

    本文只贴出一段简单的代码。

    数据格式如下,下图为数字2:


    大小为32X32,存在多个文本文件中。

    代码如下:

    # -*- coding: utf-8 -*-
    import matplotlib.pyplot as plt
    import numpy as np
    """导入用于矩阵计算的numpy包和用于作图的matplotlib包"""
    
    
    def get_vector(f_name):
        """打开文件并且将数据读入,存在链表中"""
        vec = []
        fp = open(f_name)
        for i in xrange(32):
            line = fp.readline()
            for j in xrange(32):
                vec.append(int(line[j]))
        fp.close()
        return vec
    
    
    def import_data():
        """导入所有训练集数据,并将数据转化为numpy矩阵格式"""
        data = []
        label = []
        for i in xrange(10):
            for j in xrange(150):
                f_name = "trainingDigits\\"+str(i)+"_"+str(j)+".txt"
                data.append(get_vector(f_name))
                label.append(i)
        return np.mat(data), np.mat(label)
    
    
    def import_test():
        """导入所有测试集数据,并将数据转化为numpy矩阵格式"""
        data = []
        label = []
        for i in xrange(10):
            for j in xrange(50):
                f_name = "testDigits\\"+str(i)+"_"+str(j)+".txt"
                data.append(get_vector(f_name))
                label.append(i)
        return np.mat(data), np.mat(label)
    
    
    def sigmoid(x):
        """定义sigmod函数"""
        return 1.0/(1+np.exp(-x))
    
    
    def ga(w, data, label, alpha, epoch):
        """
        用梯度上升算法训练softmax分类器
        w为要训练的参数
        data为训练集数据
        label为训练集数据的标签
        alpha为学习率
        epoch为最大迭代次数
        """
        errors = []
        for k in xrange(epoch):
            cs = data*w/1024.0    # 归一化
            error = np.exp(cs)
            row_sum = -error.sum(axis=1)
            row_sum = row_sum.repeat(10, axis=1)
            error = error/row_sum
            for m in range(1500):
                error[m, label[m, 0]] += 1.0
            w = w + alpha * data.T*error
            errors.append(1-accuracy(cs.argmax(axis=1), label, 1500))
        return w, errors
    
    
    def accuracy(a, b, num):
        """用于测试训练好的模型在测试集上的准确率"""
        n = 0.0
        for i in xrange(num):
            if a[i, 0] == b[i, 0]:
                n += 1.0
        return n/(num+0.0)
    
    
    def logistic():
        """主函数,首先导入数据,然后训练模型,并且计算模型在测试集上的准确率,
        最后画出随着迭代次数的增加,模型的训练集上准确率的变化"""
        train, train_label = import_data()
        test, test_label = import_test()
        w, errors = ga(np.mat(np.ones((1024, 10))), train, train_label.T, 0.01, 51)
        test_ = test*w
        test_cal = test_.argmax(axis=1)
        # for i in xrange(500):
        #     print test_cal[i, 0], test_label.T[i, 0]
        print u"准确率:",
        print accuracy(test_cal, test_label.T, 500)  # 打印出准确率的值
        plt.figure()
        plt.plot(errors, linewidth=5)
        plt.grid()
        plt.xlabel("Error Rate")
        plt.ylabel("Iterations")
        plt.xlim([0, 50])
        plt.show()
    
    if __name__ == "__main__":
        logistic()



    展开全文
  • 前言手写数字识别作为机器学习中一个比较有趣的内容,结合 K210 芯片强大的 KPU 算力,可以蹦出很多好玩的点子。本次以通俗易懂的方式记录一波玩耍手写数字识别的案例。目录相关理论基于 KNN 分类算法的模型搭建...

    前言

    手写数字识别作为机器学习中一个比较有趣的内容,结合 K210 芯片强大的 KPU 算力,可以蹦出很多好玩的点子。本次以通俗易懂的方式记录一波玩耍手写数字识别的案例。

    目录

    1. 相关理论
    2. 基于 KNN 分类算法的模型搭建(代码展示)
    3. 图片导入与分类预测(代码展示)

    1、相关理论

    1.1 图像二值化

    bdfb9dbd32a99962f3371bbadd6f2737.png

    如上图:是一个红色的数字4,像素尺寸为 32*32,即一共有1024个像素点,每个像素点的色彩值范围是0-255,其中0代表黑色,255代表白色,故本文以128为阈值进行划分。

    令单个像素点的色彩值为 x ,则:x<=128 时,取 x = 1,反之 x = 0

    经过上述变换,整张图片的色彩值就只有 0,1 两种了,此过程就是图片的二值化过程。

    1.2 二值化数据的存储

    经过二值化的图片,仍然有1024个像素点,只是其值仅有0,1两种,那么,怎样将图片的信息和模型之间建立联系呢?

    下图是一份包含多张手写图像信息的 EXCEL 表格。从第一行来看,其第一列代表图片中的数字,其它列为分别为1024个像素点的值。这样,每一行就包含了一张图片的信息。

    92d468dc35dca14a19baeb333e3b3da2.png

    所以后面需要做的工作就是训练模型,通过 1024 个像素点的信息推断出该行第一列所对应的信息。

    当然啦,上图中的训练数据均有结果对应,用于训练模型和检验模型的有效性;而手写的数字只有1024个像素点信息,所以需要通过训练好的模型进行预测,推断出图片中对应的数字。

    2、KNN 分类算法

    KNN 分类算法就比较简单了。盯着下图,最中间的这个圆当中有2个三角形和一个方块,它们各属于一个阵营。突然新来了一个五角星,那怎么判断五角星是属于哪个阵营呢?

    很明显,找出 K 个距离五角星最近的形状,比如 K=3,那么就选中了刚刚提到的这2个三角形和1个方块。其中,三角形比正方形多,显然三角形更牛逼,所以五角星跟它同阵营。这就是 KNN 分类的原理。

    41a6025af6d73e58a679ad1bbd0b069e.png

    至于距离的计算,高中数学里的欧式距离公式就能搞定:

    832c327bcc871a79d7e4f56448d29c82.png

    推广到多维变量,则有:

    d679a08933f19d41c83e8e11720955e8.png

    3、图片导入及分类预测

    3.1 导入 EXCEL 中的训练数据

    import pandas as pd
    df = pd.read_excel('data.xlsx')
    x = df.drop(columns = '对应数字')  # 抛弃第一列的因变量数据,保留自变量数据
    y = df['对应数字']                 # 第一列的因变量数据

    3.2 训练 KNN 模型

    from sklearn.model_selection import train_test_split
    xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size = 0.2,random_state = 123)
    from sklearn.neighbors import KNeighborsClassifier as KNN
    knn = KNN(n_neighbors=5)           # 算法 K 参数设置 [1:8]
    model = knn.fit(xtrain,ytrain)
    print(model)

    3.3 对预测模型进行评价

    from sklearn.metrics import accuracy_score
    y_pred = knn.predict(xtest)
    score2 = knn.score(xtest,ytest)    # 计算 knn 分类预测得分
    print('KNN预测模型评分为: ' + str(score2))

    3.4 图片数字导入及模型验证

    from PIL import Image
    img = Image.open('数字6.png')
    img = img.resize ((32,32))
    img = img.convert('L')  # 转换为灰度图
    # 图片二值化处理
    import numpy as np
    img_new = img.point (lambda x: 0 if x >128 else 1)   # 像素点控制,0为黑,255为白,所以取中间128作为阈值,对像素点二值化处理
    arr = np.array(img_new)                              # arr 为 32*32 像素点矩阵
    # 打印二值化图形
    for i in range(arr.shape[0]):                        # shape[0]代表行数,1代表列数
        print(arr[i])
    arr1 = arr.reshape(1,-1)                             # arr 转换为 1 行,(-1,1)为 1 列
    result = knn.predict(arr1)
    print('识别的数字为:' + str(result))

    4、效果展示

    4.1 KNN 模型评分情况

    从下图可以看出, KNN 模型的预测精度 score 表现还是非常不错的!

    16e3e9a9d8221aa1be2289f972d3c6ee.png

    4.2 图片二值化处理后的像素数据

    不难看出,1代表黑色部分,0代表白色部分;在像素矩阵中可以明显地体现 6 这个数字。

    cab10359dbff33927da9244fce804931.png

    4.3 预测结果

    64d887655163cfba344c3e61f79df48b.png

    其实,从 0 到 9 均测试了一遍,只有数字 8 比较刁钻,好几次预测成了 9;最后发现是截图的方式有点小问题,纠正以后,所有的数字均能够精准识别。

    5、结论

    最后,接 4.3 涉及的问题,有一个注意事项:截图的时候尽可能小,让数字充满整张图片,这样才能够有效保证识别的准确度。

    展开全文
  • Mnist手写数字识别 Tensorflow任务目标了解mnist数据集搭建和测试模型编辑环境操作系统:Win10python版本:3.6集成开发环境:pycharmtensorflow版本:1.*了解mnist数据集mnist数据集:mnist数据集下载地址??MNIST 数据集...

    Mnist手写数字识别 Tensorflow

    任务目标

    了解mnist数据集

    搭建和测试模型

    编辑环境

    操作系统:Win10

    python版本:3.6

    集成开发环境:pycharm

    tensorflow版本:1.*

    了解mnist数据集

    mnist数据集:mnist数据集下载地址

    ??MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据.

    ??图片是以字节的形式进行存储, 我们需要把它们读取到 NumPy array 中, 以便训练和测试算法。

    读取mnist数据集

    mnist = input_data.read_data_sets("mnist_data", one_hot=True)

    搭建和测试模型

    代码

    def getMnistModel(savemodel,is_train):

    """

    :param savemodel: 模型保存路径

    :param is_train: true为训练,false为测试模型

    :return:None

    """

    mnist = input_data.read_data_sets("mnist_data", one_hot=True)

    with tf.variable_scope("data"):

    x = tf.placeholder(tf.float32,shape=[None,784]) # 784=28*28*1 宽长为28,单通道图片

    y_true = tf.placeholder(tf.int32,shape=[None,10]) # 10个类别

    with tf.variable_scope("conv1"):

    w_conv1 = tf.Variable(tf.random_normal([10,10,1,32])) # 10*10的卷积核 1个通道的输入图像 32个不同的卷积核,得到32个特征图

    b_conv1 = tf.Variable(tf.constant(0.0,shape=[32]))

    x_reshape = tf.reshape(x,[-1,28,28,1]) # n张 28*28 的单通道图片

    conv1 = tf.nn.relu(tf.nn.conv2d(x_reshape,w_conv1,strides=[1,1,1,1],padding="SAME")+b_conv1) #[1, 1, 1, 1] 中间2个1,卷积每次滑动的步长 padding=‘SAME‘ 边缘自动补充

    pool1 = tf.nn.max_pool(conv1,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME") # 池化窗口为[1,2,2,1] 中间2个2,池化窗口每次滑动的步长 padding="SAME" 考虑边界,如果不够用 用0填充

    with tf.variable_scope("conv2"):

    w_conv2 = tf.Variable(tf.random_normal([10,10,32,64]))

    b_conv2 = tf.Variable(tf.constant(0.0,shape=[64]))

    conv2 = tf.nn.relu(tf.nn.conv2d(pool1,w_conv2,strides=[1,1,1,1],padding="SAME")+b_conv2)

    pool2 = tf.nn.max_pool(conv2,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME")

    with tf.variable_scope("fc"):

    w_fc = tf.Variable(tf.random_normal([7*7*64,10])) # 经过两次卷积和池化 28 * 28/(2+2) = 7 * 7

    b_fc = tf.Variable(tf.constant(0.0,shape=[10]))

    xfc_reshape = tf.reshape(pool2,[-1,7*7*64])

    y_predict = tf.matmul(xfc_reshape,w_fc)+b_fc

    with tf.variable_scope("loss"):

    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_true,logits=y_predict))

    with tf.variable_scope("optimizer"):

    train_op = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

    with tf.variable_scope("acc"):

    equal_list = tf.equal(tf.arg_max(y_true,1),tf.arg_max(y_predict,1))

    accuracy = tf.reduce_mean(tf.cast(equal_list,tf.float32))

    # tensorboard

    # tf.summary.histogram用来显示直方图信息

    # tf.summary.scalar用来显示标量信息

    # Summary:所有需要在TensorBoard上展示的统计结果

    tf.summary.histogram("weight",w_fc)

    tf.summary.histogram("bias",b_fc)

    tf.summary.scalar("loss",loss)

    tf.summary.scalar("acc",accuracy)

    merged = tf.summary.merge_all()

    init = tf.global_variables_initializer()

    saver = tf.train.Saver()

    with tf.Session() as sess:

    sess.run(init)

    filewriter = tf.summary.FileWriter("tfboard",graph=sess.graph)

    if is_train:

    for i in range(500):

    x_train,y_train = mnist.train.next_batch(100)

    sess.run(train_op,feed_dict={x:x_train,y_true:y_train})

    summary = sess.run(merged,feed_dict={x:x_train,y_true:y_train})

    filewriter.add_summary(summary,i)

    print("第%d训练,准确率为%f"%(i+1,sess.run(accuracy,feed_dict={x:x_train,y_true:y_train})))

    saver.save(sess,savemodel)

    else:

    count = 0.0

    epochs = 100

    saver.restore(sess, savemodel)

    for i in range(epochs):

    x_test, y_test = mnist.train.next_batch(1)

    print("第%d张图片,真实值为:%d预测值为:%d" % (i + 1,

    tf.argmax(sess.run(y_true, feed_dict={x: x_test, y_true: y_test}),

    1).eval(),

    tf.argmax(

    sess.run(y_predict, feed_dict={x: x_test, y_true: y_test}),

    1).eval()

    ))

    if (tf.argmax(sess.run(y_true, feed_dict={x: x_test, y_true: y_test}), 1).eval() == tf.argmax(

    sess.run(y_predict, feed_dict={x: x_test, y_true: y_test}), 1).eval()):

    count = count + 1

    print("正确率为 %.2f " % float(count * 100 / epochs) + "%")

    查看Tensorboard

    ?? TensorBoard是TensorFlow下的一个可视化的工具,能够帮助我们在训练大规模神经网络过程中出现的复杂且不好理解的运算。TensorBoard能展示你训练过程中绘制的图像、网络结构等。

    复制你训练后log文件保存的位置

    20200718200140233342.jpg

    打开终端

    输入命令 tensorboard --logdir=D:\GongCheng\mnist\tfboard

    tensorboard --logdir= + 文件夹的路径

    20200718200140823208.jpg

    用浏览器打开上述地址

    20200718200140942353.jpg

    完整代码

    import tensorflow as tf

    from tensorflow.examples.tutorials.mnist import input_data

    def getMnistModel(savemodel,is_train):

    """

    :param savemodel: 模型保存路径

    :param is_train: True为训练,False为测试模型

    :return:None

    """

    mnist = input_data.read_data_sets("mnist_data", one_hot=True)

    with tf.variable_scope("data"):

    x = tf.placeholder(tf.float32,shape=[None,784]) # 784=28*28*1 宽长为28,单通道图片

    y_true = tf.placeholder(tf.int32,shape=[None,10]) # 10个类别

    with tf.variable_scope("conv1"):

    w_conv1 = tf.Variable(tf.random_normal([10,10,1,32])) # 10*10的卷积核 1个通道的输入图像 32个不同的卷积核,得到32个特征图

    b_conv1 = tf.Variable(tf.constant(0.0,shape=[32]))

    x_reshape = tf.reshape(x,[-1,28,28,1]) # n张 28*28 的单通道图片

    conv1 = tf.nn.relu(tf.nn.conv2d(x_reshape,w_conv1,strides=[1,1,1,1],padding="SAME")+b_conv1) #[1, 1, 1, 1] 中间2个1,卷积每次滑动的步长 padding=‘SAME‘ 边缘自动补充

    pool1 = tf.nn.max_pool(conv1,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME") # 池化窗口为[1,2,2,1] 中间2个2,池化窗口每次滑动的步长 padding="SAME" 考虑边界,如果不够用 用0填充

    with tf.variable_scope("conv2"):

    w_conv2 = tf.Variable(tf.random_normal([10,10,32,64]))

    b_conv2 = tf.Variable(tf.constant(0.0,shape=[64]))

    conv2 = tf.nn.relu(tf.nn.conv2d(pool1,w_conv2,strides=[1,1,1,1],padding="SAME")+b_conv2)

    pool2 = tf.nn.max_pool(conv2,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME")

    with tf.variable_scope("fc"):

    w_fc = tf.Variable(tf.random_normal([7*7*64,10])) # 经过两次卷积和池化 28 * 28/(2+2) = 7 * 7

    b_fc = tf.Variable(tf.constant(0.0,shape=[10]))

    xfc_reshape = tf.reshape(pool2,[-1,7*7*64])

    y_predict = tf.matmul(xfc_reshape,w_fc)+b_fc

    with tf.variable_scope("loss"):

    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_true,logits=y_predict))

    with tf.variable_scope("optimizer"):

    train_op = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

    with tf.variable_scope("acc"):

    equal_list = tf.equal(tf.arg_max(y_true,1),tf.arg_max(y_predict,1))

    accuracy = tf.reduce_mean(tf.cast(equal_list,tf.float32))

    # tensorboard

    # tf.summary.histogram用来显示直方图信息

    # tf.summary.scalar用来显示标量信息

    # Summary:所有需要在TensorBoard上展示的统计结果

    tf.summary.histogram("weight",w_fc)

    tf.summary.histogram("bias",b_fc)

    tf.summary.scalar("loss",loss)

    tf.summary.scalar("acc",accuracy)

    merged = tf.summary.merge_all()

    init = tf.global_variables_initializer()

    saver = tf.train.Saver()

    with tf.Session() as sess:

    sess.run(init)

    filewriter = tf.summary.FileWriter("tfboard",graph=sess.graph)

    if is_train:

    for i in range(500):

    x_train,y_train = mnist.train.next_batch(100)

    sess.run(train_op,feed_dict={x:x_train,y_true:y_train})

    summary = sess.run(merged,feed_dict={x:x_train,y_true:y_train})

    filewriter.add_summary(summary,i)

    print("第%d训练,准确率为%f"%(i+1,sess.run(accuracy,feed_dict={x:x_train,y_true:y_train})))

    saver.save(sess,savemodel)

    else:

    count = 0.0

    epochs = 100

    saver.restore(sess, savemodel)

    for i in range(epochs):

    x_test, y_test = mnist.train.next_batch(1)

    print("第%d张图片,真实值为:%d预测值为:%d" % (i + 1,

    tf.argmax(sess.run(y_true, feed_dict={x: x_test, y_true: y_test}),

    1).eval(),

    tf.argmax(

    sess.run(y_predict, feed_dict={x: x_test, y_true: y_test}),

    1).eval()

    ))

    if (tf.argmax(sess.run(y_true, feed_dict={x: x_test, y_true: y_test}), 1).eval() == tf.argmax(

    sess.run(y_predict, feed_dict={x: x_test, y_true: y_test}), 1).eval()):

    count = count + 1

    print("正确率为 %.2f " % float(count * 100 / epochs) + "%")

    if __name__ == ‘__main__‘:

    modelPath = "model/mnist_model"

    getMnistModel(modelPath,True)

    展开全文
  • 基于卷积神经网络的手写数字识别python代码实现 卷积神经网络(Convolutional Neural Network,CNN)中,卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的连接是非全连接的,且同一层中某些神经元...
  • 注意:单击此处https://urlify.cn/jYjAva下载完整的示例代码,或通过Binder在浏览器中运行此示例一个显示了如何使用scikit-learn来识别手写数字图像的示例。用户手册的教程部分对此示例进行了注释 。输出:...

    注意:单击此处https://urlify.cn/jYjAva下载完整的示例代码,或通过Binder在浏览器中运行此示例

    一个显示了如何使用scikit-learn来识别手写数字图像的示例。

    用户手册的教程部分对此示例进行了注释 。

    73d505f97ec0cb732f91f3a4425958a1.png2c8860d79eca490f9f7c9af9b143c6c8.png

    输出:

    Classification report for classifier SVC(gamma=0.001): precision recall f1-score support 0 1.00 0.99 0.99 88 1 0.99 0.97 0.98 91 2 0.99 0.99 0.99 86 3 0.98 0.87 0.92 91 4 0.99 0.96 0.97 92 5 0.95 0.97 0.96 91 6 0.99 0.99 0.99 91 7 0.96 0.99 0.97 89 8 0.94 1.00 0.97 88 9 0.93 0.98 0.95 92 accuracy 0.97 899 macro avg 0.97 0.97 0.97 899weighted avg 0.97 0.97 0.97 899Confusion matrix:[[87 0 0 0 1 0 0 0 0 0] [ 0 88 1 0 0 0 0 0 1 1] [ 0 0 85 1 0 0 0 0 0 0] [ 0 0 0 79 0 3 0 4 5 0] [ 0 0 0 0 88 0 0 0 0 4] [ 0 0 0 0 0 88 1 0 0 2] [ 0 1 0 0 0 0 90 0 0 0] [ 0 0 0 0 0 1 0 88 0 0] [ 0 0 0 0 0 0 0 0 88 0] [ 0 0 0 1 0 1 0 0 0 90]]

    print(__doc__)# 作者: Gael Varoquaux # 许可证: BSD 3 clause# 导入Python标准科学库import matplotlib.pyplot as plt# 导入数据集,分类器,和性能度量(metrics)from sklearn import datasets, svm, metricsfrom sklearn.model_selection import train_test_split# 手写数字识别数据集digits = datasets.load_digits()# 我们的数据是由8x8的数字图像组成的,# 让我们查看存储在的“images”属性中数据集的前4张图像。# 如果我们正在处理图像文件,则可以使用matplotlib.pyplot.imread命令加载它们。# 请注意,每个图像必须具有相同的大小。对于这些图片,# 我们知道它们代表的是哪位数字:它在数据集的“目标(target)”中给出。_, axes = plt.subplots(2, 4)images_and_labels = list(zip(digits.images, digits.target))for ax, (image, label) in zip(axes[0, :], images_and_labels[:4]): ax.set_axis_off() ax.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest') ax.set_title('Training: %i' % label)# 要将分类器应用于此数据,我们需要将图像# 数据转换为(样本,特征)矩阵:n_samples = len(digits.images)data = digits.images.reshape((n_samples, -1))# 创建分类器:支持向量分类器classifier = svm.SVC(gamma=0.001)# 将数据分为训练和测试子集X_train, X_test, y_train, y_test = train_test_split( data, digits.target, test_size=0.5, shuffle=False)# 我们把数据集前一半部分用来训练classifier.fit(X_train, y_train)# 现在,预测后一半部分:predicted = classifier.predict(X_test)images_and_predictions = list(zip(digits.images[n_samples // 2:], predicted))for ax, (image, prediction) in zip(axes[1, :], images_and_predictions[:4]): ax.set_axis_off() ax.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest') ax.set_title('Prediction: %i' % prediction)print("Classification report for classifier %s:\n%s\n" % (classifier, metrics.classification_report(y_test, predicted)))disp = metrics.plot_confusion_matrix(classifier, X_test, y_test)disp.figure_.suptitle("Confusion Matrix")print("Confusion matrix:\n%s" % disp.confusion_matrix)plt.show()

    脚本的总运行时间:(0分钟0.654秒)

    估计的内存使用量: 8 MB

    58160c76deabda8144581470617a1b64.png

    下载Python源代码: plot_digits_classification.py

    下载Jupyter notebook源代码: plot_digits_classification.ipynb

    由Sphinx-Gallery生成的画廊

    展开全文
  • 本文实例讲述了Python利用逻辑回归模型解决MNIST手写数字识别问题。分享给大家供大家参考,具体如下:1、MNIST手写识别问题MNIST手写数字识别问题:输入黑白的手写阿拉伯数字,通过机器学习判断输入的是几。可以通过...
  • 本文实例为大家分享了Tensorflow训练MNIST手写数字识别模型的具体代码,供大家参考,具体内容如下import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataINPUT_NODE = 784 # 输入层...
  • MNIST数据集是由0-9,10个手写数字组成。训练图像有60000张,测试图像有10000张。1、在tensorflow中可以使用python下载数据集,调用download.py。代码如下:from tensorflow.examples.tutorials.mnist import input_...
  • 本文实例为大家分享了基于Tensorflow的MNIST手写数字识别分类的具体实现代码,供大家参考,具体内容如下代码如下:import tensorflow as tfimport numpy as npfrom tensorflow.examples.tutorials.mnist import ...
  • 人生三大错觉之一——我超越了标准库 当然,SVM也不是什么标准库啦 今天要用的是sklearn下的SVM工具 今天要用的数据也是sklearn下的自带手写数字的数据 首先导包: import numpy as np from sklearn import svm ...
  • 该程序使用Python实现BP神经网络mnist手写数字识别。压缩包中给出训练好的权重以及偏移量的mat文件,在程序运行后输入mnist文件夹中图片路径的后缀就可以进行预测,如:4/mnist_test_4.png。压缩包给出训练集的mat...
  • 基于BP神经网络和sklearn的digit数据集编写的手写数字识别demo。带有GUI手写画板,同时还可以根据需要保存手写数字的数据。
  • Neural Networks and Deep Learning的手写数字识别例程的python3版本,亲自在python shell下修改仿真后,测试无bug
  • 本文实例讲述了Python tensorflow实现mnist手写数字识别。分享给大家供大家参考,具体如下:非卷积实现import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datadata_path = 'F:\CNN\...
  • in call x = self.dense1(inputs) File "/home/kalarea/.conda/envs/py35/lib/python3.5/site-packages/tensorflow/python/keras/engine/base_layer.py", line 759, in call self.build(input_shapes) File "/home/...
  • """ 识别图片 :param file_path: :return: """ with open(MODEL_LABELS_FILENAME, "rb") as f: lb = pickle.load(f) img = cv.imread(file_path) img = cv.cvtColor(img, cv.COLOR_BGR2GRAY) img = img.reshape(1, ...
  • 预处理手写数字函数: def shouxiefix(path_tu): #path_tu = 'D:\\002.png' img = cv2.imread(path_tu,0)# 蓝95 绿200 红147通道数(-1) 数组 高 宽 通道459 362 3 img = cv2.resize(img,(28,28)) """cv2.imshow...
  • sklearn内部集成了一些手写数字图片数据集,现在我们使用这些数据,用SVM支持向量机算法进行训练识别的练习。笔者习惯用pycharm,今天手痒,用一下Spyder编辑,顺便对比一下哪一个好用。废话不多说,上码:#-*- ...
  • TensorFlow入门(三) - mnist手写数字识别(可视化训练)这篇文章是 TensorFlow Tutorial 入门教程的第三篇文章。在第一篇文章中,我们通过每10步打印出loss值的方式,来观察loss值的变化。但是这样做并不直观,有没有...
  • KNN实现手写数字识别Python

    千次阅读 2017-01-06 09:44:43
    本文章总结了KNN算法字手写数字识别的应用,比较系统的对传统KNN和各种改进的KNN算法进行实现,由于完整的代码量较大(部分代码参考了机器学习实战),不适合全部贴出,但是博主乐于分享,有需要的话可以直接联系我...
  • 会将放进去的图片预测,然后输出结果,代码说明请看github的readme(最底下) 官网:http://yann.lecun.com/exdb/mnist/ 这个MNIST数据库是一个手写数字的数据库,它提供了六万的训练集和一万的测试集。 它的图片是被...
  • 在开始前已经默认你学会了,python基础 知道深度网络由那些层组成 下面的代码全部复制上可以直接运行的 如果报错,可以私聊我 训练代码 引入包 import torch from torchvision import datasets,transforms from ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,452
精华内容 980
关键字:

手写数字识别python

python 订阅