PyTorch深度学习实战

使用PyTorch进行深度学习实战

使用PyTorch进行深度学习实战,对我来说一般编写四个文件来完成深度学习项目:

  • main文件
  • engine文件
  • model文件
  • utils文件

main文件

main文件主要进行参数的解析argparse,链接其他三个文件,将数据x,y输入模型得到输出loss,保存模型等,在main文件里主要进行以下几个过程:

engine=trainer(lr,decay,dim,....)
train_loss=engine.train(x,y)
test_loss=enginer.eval(x,y)

model文件

在model文件里主要进行网络结构部分的组织和定义,有一个大类,如下:

class Net1(nn.Module):
	def __init__(self,indim,outdim,...,...):
		super(Net1,self).__init__()
		1、初始化一些参数
		2、定义网络结构和BatchNormalization
	def forward(self,x):
		进行前馈传播运算
		return x'

大类的 _init_ 里可能调用其他的小的网络类,都是像上面的类似的结构

engine文件

engine文件里主要定义了一个 trainer类,具体结构如下:

class trainer():
	def __init__(self,网络的一些维数和模型训练需要用到的一些参数):
		# 定义模型
		self.model=Net(args,kwargs) 
		# 定义优化器
		self.optimizer=....
		# 定义损失函数计算方式
		self.loss=function1
		# 有时候还会有一个所有数据进行归一化的方式
		self.scaler=....
	def train(self,trainx,trainy):
		self.model.train()
		self.optimizer.zero_grad()
		根据项目需要对trainx,trainy进行适当的处理。。。。。
		pred=self.model(trainx)
		loss=self.loss(pred,trainy)
		loss.backward()
		# 有时候还会插入一个torch.nn.utils.clip_grad_norm_(self.model.parameters)函数对参数的梯度进行一定的处理
		self.optimizer.step()
		return loss
	def eval(self,testx,testy):
		self.model.eval()
		对testx,testy做和trainx,trainy一样的处理
		pred=self.model(testx)
		loss=self.loss(pred,testy)
		return loss

utils文件

在utils文件里主要进行数据的处理等,定义DataLoader类和归一化StandardScaler类

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值