Kaggle入门:Digit Recognizer

这篇博客介绍了如何使用TensorFlow进行Kaggle上的Digit Recognizer挑战,通过处理MNIST数据集,包括数据下载、读取、训练及结果提交。采用CNN模型,最终在Kaggle上取得了99%的准确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kaggle入门:Digit Recognizer

数据是经典的lecun大神的mnist手写数字数据集。

一、下载数据

数据分为三部分:训练数据、测试数据、提交数据格式示例
这里写图片描述

数据格式和lecun网站的数据格式有所不同,这里所给的数据为csv格式每一张数字图片为28*28像素的灰度图,文件每一行代表756个像素点。

二、数据读取

这里使用pandas库读取数据, 由于灰度图像像素值在0-255之间,所以将其转化为uint8类型。
mnist.py

import pandas as pd
import numpy as np

train_data_file = 'train.csv'
test_data_file = 'test.csv'

train_data = pd.read_csv(train_data_file).as_matrix().astype(np.uint8)
test_data = pd.read_csv(test_data_file).as_matrix().astype(np.uint8)


def extract_images_and_labels(dataset, validation = False):
    #需要将数据转化为[image_num, x, y, depth]格式
    images = dataset[:, 1:].reshape(-1, 28, 28, 1)

    #由于label为0~9,将其转化为一个向量.如将0 转换为 [1,0,0,0,0,0,0,0,0,0]
    labels_dense = dataset[:, 0]
    num_labels = labels_dense.shape[0]
    index_offset = np.arange(num_labels) * 10
    labels_one_hot = np.zeros((num_labels, 10))
    labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
    if validation:
        num_images = images.shape[0]
        divider = num_images - 200
        return images[:divider], labels_one_hot[:divider], images[divider+1:], labels_one_hot[divider+1:]
    else:
        return images, labels_one_hot


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值