• 大小: 10.27MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-24
  • 语言: 其他
  • 标签: openmp  

资源简介

基于openmp的bp神经网络实现手写体数字识别算法的优化。

资源截图

代码片段和文件信息

#include 

#include “dataLoader.h“

dataLoader::dataLoader()
:mLabelLen(0)
mImageLen(0)
mNumLabel(0)
mNumImage(0)
mImageStartPos(16)
mLableStartPos(8){}

dataLoader::~dataLoader() {
mLabelFile.close();
mImageFile.close();
}


bool dataLoader::openLabelFile(const char* url) {
mLabelFile.open(url ios::binary | ios::in);

if (mLabelFile.is_open()) {
int num = 0;
char temp[4];

mLabelFile.read(temp 4);

if (mLabelFile.gcount() == 4) {
num = GRB4(temp);
if (DATA_INPUT_LABEL_FLAG == num) {
mLabelFile.read(temp 4);

if (mLabelFile.gcount() == 4) {
mNumLabel = GRB4(temp);
mLabelLen = 1;
return true;
}
else {
cout << “read label count failed“ << endl;
}
}
else {
cout << “this file isn‘t label filethe flag is:“ << num << endl;
}
}
}

return false;
}

bool dataLoader::openImageFile(const char* url) {
mImageFile.open(url ios::binary | ios::in);

if (mImageFile.is_open()) {
int num = 0;

char temp[4];

mImageFile.read(temp 4);

if (mImageFile.gcount() == 4) {
int flag = DATA_INPUT_IMAGE_FLAG;
num = GRB4(temp);
if (DATA_INPUT_IMAGE_FLAG == num) {
mImageFile.read(temp 4);

if (mImageFile.gcount() == 4) {
mNumImage = GRB4(temp);

int width = 0;
int height = 0;

mImageFile.read((char*)&width 4);

if (mImageFile.gcount() == 4) {
width = GRB4(&width);
mImageFile.read((char*)&height 4);

if (mImageFile.gcount() == 4) {
height = GRB4(&height);
mImageWidth = width;
mImageHeight = height;
mImageLen = width * height;
}
}

return true;
}
else {
cout << “read image count failed“ << endl;
}
}
else {
cout << “this file isn‘t image filethe flag is:“ << num << endl;
}
}
}

return false;
}

bool dataLoader::readIndex(int* label int pos) {
if (mLabelFile.is_open() && !mLabelFile.eof()) {
mLabelFile.seekg(mLableStartPos + pos*mLabelLen);
mLabelFile.read((char*)label mLabelLen);
return mLabelFile.gcount() == mLabelLen;
}
return false;
}

bool dataLoader::readImage(char imageBuf[] int pos) {
if (mImageFile.is_open() && !mImageFile.eof()) {
mImageFile.seekg(mImageStartPos + pos*mImageLen);
mImageFile.read(imageBuf mImageLen);

return mImageFile.gcount() == mImageLen;
}
return false;
}

bool dataLoader::read(int* label char imageBuf[] int pos) {
if (readIndex(label pos)) {
return readImage(imageBuf pos);
}

return false;
}

void dataLoader::reset() {
if (mImageFile.is_open()) {
mImageFile.clear();
mImageFile.seekg(mImageStartPos);
}

if (mLabelFile.is_open()) {
mLabelFile.clear();
mLabelFile.seekg(mLableStartPos);
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-16 19:18  BP_openmp\
     文件        1680  2018-12-24 16:37  BP_openmp\README.md
     目录           0  2019-01-16 19:18  BP_openmp\data\
     文件     7840016  2018-12-24 16:37  BP_openmp\data\t10k-images.idx3-ubyte
     文件       10008  2018-12-24 16:37  BP_openmp\data\t10k-labels.idx1-ubyte
     文件    47040016  2018-12-24 16:37  BP_openmp\data\train-images.idx3-ubyte
     文件       60008  2018-12-24 16:37  BP_openmp\data\train-labels.idx1-ubyte
     目录           0  2019-01-18 14:35  BP_openmp\src\
     文件       10810  2019-01-16 23:44  BP_openmp\src\NetWork.cpp
     文件        1940  2019-01-16 11:15  BP_openmp\src\NetWork.h
     文件        1304  2019-01-16 10:24  BP_openmp\src\Neuronlayer.cpp
     文件         681  2018-12-24 16:37  BP_openmp\src\Neuronlayer.h
     文件        1268  2018-12-24 16:37  BP_openmp\src\Utils.h
     文件          80  2019-01-18 14:34  BP_openmp\src\bash
     文件          11  2019-01-17 14:32  BP_openmp\src\config.txt
     文件        2722  2019-01-16 10:06  BP_openmp\src\dataLoader.cpp
     文件        1176  2019-01-16 10:04  BP_openmp\src\dataLoader.h
     文件       10274  2019-01-18 14:35  BP_openmp\src\gmon.out
     文件       41808  2018-12-24 16:37  BP_openmp\src\main
     文件        5406  2019-01-18 14:34  BP_openmp\src\main.cpp
     文件       46920  2019-01-18 14:35  BP_openmp\src\run
     文件           0  2019-01-16 09:45  BP_openmp\src\新建文本.txt

评论

共有 条评论