python网络故障判断技巧_[深度编程技巧] Python网络训练几种小技巧

当刚入门深度学习,进行编程实践时,若掌握一些基本的小技巧(tricks),能够让初学者避免一些重复与无序的操作,更快的进入到深度学习的核心地带。下面我们盘点一下python神经网络编程的几个基础的小技巧。

1 交叉验证

刚开始编写与训练网络时,我们一般在深入理解已有模型和代码的基础上,对模型或代码进行再创造。但是笔者发现,GitHub上有部分研究者提供的源代码不涉及交叉验证部分。交叉验证在改造模型的初期非常重要,模型在验证集上的效果是我们调整超参数的重要参考,已有模型超参数基本上已经定型,所以较少有人提供交叉验证部分的代码,但在实际的研究中交叉验证是不可或缺的。

交叉验证一般分为留出法和K-fold法:留出法:将训练-验证-测试集按照一定比例分开(如6:2:2),留出验证集和测试集时要求随机采样,要尽量确保训练集、验证集合测试集的数据分布相同。

K-fold法:将原本的训练集分为K份,每次选择一份作为验证集。在k-1份的训练集上训练,然后在验证集上验证,持续k次,每次变更一次验证集。K-fold交叉验证法

sklearn.model_selection提供了多种KFold方法

from sklearn.model_selection import StratifiedKFold

kfold = StratifiedKFold(n_splits=k, shuffle=True, random_state=seed)

2 参数解析与汇总

argparser命令行与参数解析是当你输入cmd 打开dos 交互界面时候,启动程序要进行的参数给定。在linux系统中较多使用,当然在win系统也可使用,只要在主程序中一次定义,可以到处传参数。将所有的参数在一处汇总会使你的思路更加清晰。下面是pix2pix的参数段:

parser.add_argument('--dataroot', required=True, help='path to images (should have subfolders trainA, trainB, valA, valB, etc)')

parser.add_argument('--name', type=str, default='experiment_name', help='name of the experiment. It decides where to store samples and models')

parser.add_argument('--gpu_ids', type=str, default='0', help='gpu ids: e.g. 0 0,1,2, 0,2. use -1 for CPU')

parser.add_argument('--checkpoints_dir', type=str, default='./checkpoints', help='models are saved here')

...

pix2pix将所有的参数汇总在option里面,可以参考junyanz/pytorch-CycleGAN-and-pix2pix​github.com

3 用表格记录误差曲线

训练时将训练集误差曲线和验证集误差曲线记录下来,从两个曲线中可以判断目前的训练状态:包括是否收敛/过拟合,学习率是否应该继续调整等。

可以利用pandas记录训练误差和验证误差

import pandas as pd

data_frame = pd.DataFrame(

data={'train loss': results['train_loss'], 'val loss': results['val_loss']},

index=range(start_epoch, current_epoch)

)

data_frame.to_csv(out_path + 'results.csv', index_label='Epoch')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值