目录
1 项目构建

构建项目文件夹Banknote,以及子文件夹与py文件。
| 名称 | 作用 |
|---|---|
| data目录 | 存放原始数据与预处理后切分为训练集、验证机、测试集的数据 |
| log目录 | 训练过程中使用tensorboardX保存的指标数值,如损失、精确度等 |
| model_save目录 | 存放不同训练阶段的模型,最后找出个最优的用于测试集 |
| config.py | 保存超参数 |
| dataset_banknote.py | Banknote数据类,用于训练时获取数据 |
| inference.py | 挑选模型在测试集上运行 |
| model.py | 算法模型 |
| preprocess.py | 对原始数据进行预处理,划分为训练集、验证集、测试集 |
| trainer.py | 模型训练代码 |
2 超参数设置 config.py
config.py文件如下:
# banknote clasification config
class Hyperparameter():
# ###################################################################
# Data
# ###################################################################
device='cuda'
data_dir='./data/'
data_path='./data/data_banknote_authentication.txt'
trainset_path='./data/train.txt'
devset_path='./data/dev.txt'
testset_path='./data/test.txt'
in_feature=4 # input feature dim
out_dim=2 # output feature dim (classes number)
seed=1234 # random seed
# ###################################################################
# Model Structure
# ###################################################################
layer_list=[in_feature, 64, 128, 64, out_dim]
# ###################################################################
# Experiment
# ###################################################################
batch_size=64
init_lr=1e-3 # 初始学习率
epoch=100
verbose_step = 32 # 日志打印间隔
save_step = 200 # 模型保存间隔
HP=Hyperparameter()
在其他py文件中导入cofig.HP即可获取到超参数。
from config import HP
3 数据集预处理 preprocess.py

Banknote数据集约有1300条数据,前四列为四个特征值,最后一个列为标签。
使用process.py文件将原始数据data_banknote_authentication.txt切分为训练集、测试集、训练集(train.txt、dev.txt、test.txt)。
# preprocess original data
# shuffle and split into trainset,devset,testset
import numpy as np
from config import HP
import os
trainset_ratio=0.7
devset_ratio=0.2
testset_ratio=0.1
np.random.seed(1234)
dataset=np.loadtxt(HP.data_path, delimiter=',')
np.random.shuffle(dataset)
n_items=len(dataset)
trainset_num=int(n_items*trainset_ratio)
devset_num=int(n_items*devset_ratio)
#testset_num=int(data_len*trainset_ratio)
trainset= dataset[:trainset_num]
devset= dataset[trainset_num:trainset_num + devset_num]
testset=dataset[trainset_num + devset_num:]
np.savetxt(fname=os.path.join(HP.data_dir,'train.txt'),X=trainset,delimiter=',')
np.savetxt(fname=os.path.join(HP.data_dir,'dev.txt'),X=devset,delimiter=',')
np.savetxt(fname=os.path.join(HP.data_dir,'test.txt'),X=testset,delimiter=',')

本文详细介绍了如何构建银行票据识别项目,包括配置超参数、数据预处理、数据集构建、模型设计、训练与评估过程。关键步骤包括划分训练集、验证集和测试集,使用多层感知机模型,并通过TensorBoard监控训练进度。最终在测试集上实现了100%的准确率。
最低0.47元/天 解锁文章
1970





