pytorch使用万能模板

在学习中学会总结是进步的一个阶梯,不断的克服每个小问题,才有可能发现并解决一个大问题,在学习pytorch中记录自己的成果让更多人受益,这是是开源精神的精髓所在。
下面是我记录一套使用pytorch框架,若有误请指出。


# 详情参考:https://www.jianshu.com/p/e606f8fc1626

GPU加速
dropout
批标准化处理
优化器
激活函数

import torch
import torch.nn.functional as F
import torch.nn as nn
import torch.utils.data as Data

#定义参数
BATCH_SIZE = 64  # 在Data中
EPOCHS = 50  # 迭代次数
LR = 0.05  # 学习率
OUTPUT = 0.5  # dropout百分比

######################构建torch神经网络######################
# 1.获取数据
    数据库 / excel
# 2.处理数据
    数据的异常值,缺失值,数据转换等特征工程
    最终获取:train_x,train_y test_x,test_y
# 3.利用Data处理数据 固定模板
train_dataset = Data.TensorDataset(train_x, train_y)
train_loader = Data.DataLoader(dataset=train_dataset, 
                               batch_size=BATCH_SIZE, 
                               shuffle=True, 
                               num_workers=2,)

# 4.构建神经网络模型 这部分是核心部分
class Net(nn.Module):
    def __init__(self, batch_normalization=False):
        super(Net, self).__init__()
        pass

    def forward(self, x):
        
        pass
    
# 5.构建优化函数和损失函数
net = Net()
opts = torch.optim.Adam(net.parameters(), lr=LR)  # 这里的LR是定义的学习率
loss_func = torch.nn.MSELoss()   # 这只是一种损失函数

# 6.训练
for epoch in range(EPOCHS):    # 迭代次数EPOCHS
    for step, (batch_x, batch_y) in enumerate(train_loader):  # 分批次训练
        pred= net(batch_x)  # 训练模型
        # 下面是固定模板
        loss = loss_func(pred, batch_y) # 计算损失值
        opts.zero_grad()  # 清除这次训练的梯度  (因为梯度是累加的)
        loss_func.backward() #  计算梯度
        opts.step() #应用梯度

# 7.模型预测
# 预测test_x数据对应的前10
test_output = net(test_x[:10])
pred_y = torch.max(test_output, 1)[1].data.numpy()
print(pred_y, 'prediction number')
print(test_y[:10].numpy(), 'real number')

# 8.1 模型的保存和加载--保存完整的神经网络
torch.save(net, 'net.pkl')
net = torch.load('net.pkl')
# 8.2 模型的保存和加载--只保存神经网络参数,使用的时候需要加载模型的框架
torch.save(net.state_dict(), 'net_params.pkl')  
net = Net() # 模型框架
net.load_state_dict(torch.load('net_params.pkl'))

你可能感兴趣的:(pytorch,pytorch,模板,深度学习)