博客链接:
digittra.txt 是训练集合,是数字图像像素值的数据项
digittest.txt是测试集合
test_accuracy_x.txt是输出的预测精度
1.[文件] digitstest.txt ~ 220KB 下载(473)
2.[文件] digitstra.txt ~ 550KB 下载(412)
3.[文件] Neural_Network.h ~ 1KB 下载(274)
/*
三层神经网络:
1 输入层 64 个单元(对应64个像素值)
2 隐藏层 8 个单元
3 输出层 1 个单元(对应数字)
*/
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define Alpha1 0.05 //权值学习率α 输入层到隐层
#define Alpha2 0.95//权值学习率α 隐层到输出层
#define A 20
#define lamda 0.0005
#define EPS 0.01 // 终止学习条件,误差精度判断
//#define Times 3822 // 终止学习条件,学习迭代次数判断
#define Testnum 1517 // 测试样例个数
// 神经网络各层节点数
#define InputNode 64
#define HiddenNode 32
#define OutputNode 10
void init(string tra_file, int sample_num); // 初始化变量值
void weight_init(); // 初始化,随机给权重赋初值
void one_sample_train(); // 对每个样本进行迭代
void cal_weight(); // 计算权值
void write_weights_ToFile(); // 将最后得到的权值写入文件
int recognize();
double test_accuracy(); // 利用测试集数据测试准确度
4.[文件] Neural_Network.cpp ~ 6KB 下载(246)
#include
#include
#include
#include
#include
#include
#include
#include
#include "Neural_Network.h"
using namespace std;
// w1: 输入层到隐层权重, w2:隐层到输出层权重, 下标从 1 开始
double w1[InputNode][HiddenNode];
double w2[HiddenNode][OutputNode];
string train_file; // 训练集文件名
int Times;
int input_px[InputNode]; //输入的 64 个像素值,隐藏层的输入
double hidden_out[HiddenNode]; // 隐藏层的输出,即输出层的的输入
double output_num[OutputNode]; // 输出层的最后输出
<