"版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。<br>版权<br>Python专栏收录该内容<br>39 篇文章0 订阅<br>订阅专栏<br>在编码中难免会遇到各种各样的问题,尤其是在对数据进行处理的时候会因为数据的各种问题而抛出异常,如果将数据舍弃太可以,所以数据都过一遍逻辑又太费时间。如果只是对出错的部分进行处理的话会很好的解决问题。<br>Python中错误处理的语句是:<br>try....except.....finally<br>在有可能出错的代码前面加上try,然后捕获到错误之后,在except下处理,finally部分无论try会不是捕获错误都会执行,而且不是必须的。<br>以简单的除以0的为例:<br>i = 0 j = 12 try: n = j/i except ZeroDivisionError as e: print(""except:"",e) i = 1 n = j/i except ValueError as value_err: #可以写多个捕获异常 print(""ValueError"") finally: print(""final print"")<br>输出结果为:<br>except: division by zero final print 12.0<br>如果不写抛出异常的数据,会报如下错误:<br>可以将出现的错误类型写入到except中作为捕获条件。<br>也可以同时将多个错误类型写入到一个except下,对捕获到的一起处理:<br>try: n = j/i except (ZeroDivisionError,ValueError) as e: print(""except:"",e) i = 1<br>如果实在不知道是什么错误类型,或者想偷懒也可以捕获所有的错误类型:<br>except Exception as e: print(""except:"",e)<br>“Exception”已经包含了大部分的错误类型。<br>总结:<br>1,try...except...finally,可能出错的代码写在try后,对错误的处理写在except后<br>2,except 可以监听多个错误类型,也可以写多个except对不同的错类型分开处理;<br>3,如果不知道什么错误类型,"
"前言:先是给出pytorch的训练模型,验证模型,以数据进行划分,如何调学习率,什么是TTA,给出相应的方案,并简述一下我的调参经验<br>pytorch中的训练模型<br>def train(train_loader, model, criterion, optimizer, epoch):<br># 切换模型为训练模式<br>model.train()<br>train_loss =[]<br>for i,(input, target)in enumerate(tqdm(train_loader)):<br>if use_cuda:<br>input = input.cuda()<br>target = target.cuda()<br>print(""cuda is ok"")<br>c0, c1, c2, c3, c4 = model(input)<br>else:<br>print(""cuda is not done"")<br>target = target.long()<br>loss = criterion(c0, target[:,0])+ \<br>criterion(c1, target[:,1])+ \<br>criterion(c2, target[:,2])+ \<br>criterion(c3, target[:,3])+ \<br>criterion(c4, target[:,4])<br># loss /= 6<br>optimizer.zero_grad()<br>loss.backward()<br>optimizer.step()<br>train_loss.append(loss.item())<br>return np.mean(train_loss)<br>pytorch中的验证模型<br>def validate(val_loader, model, criterion):<br># 切换模型为预测模型<br>model.eval()<br>val_loss =[]<br># 不记录模型梯度信息<br>with torch.no_grad():<br>for i,(input, target)in enumerate(tqdm(val_loader)):<br>if use_cuda:<br>input = input.cu"