资源简介

原始数据需要处理一下才能使用,这里已经处理好了,分成了训练集、验证集和测试机,处理逻辑见代码。

资源截图

代码片段和文件信息

#include 
#include 

#define TRAINING_IMAGES_NUM 50000

int reverse(int num) {
    return ((num & 0xff) << 24) |
           ((num & 0xff00) << 8) |
           ((num & 0xff0000) >> 8) |
           ((num & 0xff000000) >> 24);
}

void transform(const char* images_fname const char* labels_fname const char* out_fname) {
    // ---------------------------------------------------------------
    //  images file‘s format
    // ===============================================================
    //
    //  [offset] [type]          [value]          [description] 
    //  0000     32 bit integer  0x00000803(2051) magic number 
    //  0004     32 bit integer  60000            number of images 
    //  0008     32 bit integer  28               number of rows 
    //  0012     32 bit integer  28               number of columns 
    //  0016     unsigned byte   ??               pixel 
    //  0017     unsigned byte   ??               pixel 
    //  ........ 
    //  xxxx     unsigned byte   ??               pixel
    //
    // ===============================================================
    //  Pixels are organized row-wise. Pixel values are 0 to 255.
    //  0 means background (white) 255 means foreground (black).
    // ---------------------------------------------------------------

    FILE* fimages = fopen(images_fname “rb“);
    int images_magic images_num row_num col_num;

    fread(&images_magic 1 4 fimages);
    fread(&images_num 1 4 fimages);
    fread(&row_num 1 4 fimages);
    fread(&col_num 1 4 fimages);

    images_magic = reverse(images_magic);
    assert(images_magic == 0x0803);
    images_num = reverse(images_num);
    row_num = reverse(row_num);
    col_num = reverse(col_num);

    // ---------------------------------------------------------------
    //  labels file‘s format
    // ===============================================================
    //
    // [offset] [type]          [value]          [description] 
    // 0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
    // 0004     32 bit integer  60000            number of items 
    // 0008     unsigned byte   ??               label 
    // 0009     unsigned byte   ??               label 
    // ........ 
    // xxxx     unsigned byte   ??               label
    //
    // ===============================================================
    // The labels values are 0 to 9.
    // ---------------------------------------------------------------

    FILE* flabels = fopen(labels_fname “rb“);
    int labels_magic labels_num;

    fread(&labels_magic 1 4 flabels);
    fread(&labels_num 1 4 flabels);

    labels_magic= reverse(labels_magic);
    assert(labels_magic == 0x0801);

    labels_num = reverse(labels_num);
    assert(labels_num == images_num);

    FILE* fout = fopen(out_fname “w“);
    unsigned char pixel label;
    for (int i = 0; i < images_num; ++i) {
        fread(&label 1 1 flabels);
        fprintf(fout “

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       48376  2018-03-19 11:06  手写体识别\README.docx
     目录           0  2018-03-19 11:28  手写体识别\code\
     文件         484  2018-03-19 11:28  手写体识别\code\run.sh
     文件        4300  2018-03-19 11:28  手写体识别\code\transform.c
     文件     2206416  2018-03-19 11:06  手写体识别\testing.tar.gz
     文件    11053560  2018-03-19 11:14  手写体识别\training.tar.gz
     文件     2217117  2018-03-19 11:06  手写体识别\validation.tar.gz
     目录           0  2018-03-19 11:28  手写体识别\

评论

共有 条评论