资源简介
基于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\Neuronla
文件 681 2018-12-24 16:37 BP_openmp\src\Neuronla
文件 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
相关资源
- MPI与OpenMP并行计算的实验报告及源程
- 并行openmp程序实现生产者消费者
- OpenMP并行计算程序
- Programming Massively Parallel Processors 3rd
- 并行程序设计导论
- 多核计算与程序设计 清晰版
- 基于OpenMP矩阵相乘并行算法的设计
- 代码+报告 MPIOpenMP混合编程解决N-Bod
- openmp官方文档
- OpenMP中文版教程
- 基于fortran95,openMP的并行计算 中文版
- OpenMP矩阵相乘
- OpenMP程序
- openmp实现快速排序
- AMR-LBM-OpenMP-2D.rar
- nbody的mpi&openmp实现源码
- 并行计算导论.pdf
- intel-openmp-2018.0.0-8.tar
- 基于OpenMP的并行遗传算法
评论
共有 条评论