数据集
深度学习中,算法的好坏是测试集的训练结果体现的,同时也在推动算法的更新迭代。
常用的数据集
参考链接:zhuanlan.zhihu.com/p/55775309
- Datafoundatin
- 科赛网
- Kaggle
- 微软数据集
构造模型
如果模型比较复杂,可以写在新的.py文件中,并在main文件中import该模型.py
# design model using class
class LogisticRegressionModel(torch.nn.Module):
def __init__(self):
super(LogisticRegressionModel, self).__init__()
# 创建1 * 1维度对象
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
# y_pred = F.sigmoid(self.linear(x))
y_pred = torch.sigmoid(self.linear(x))
return y_pred
# 创建对象model
model = LogisticRegressionModel()
损失函数
可以根据nn.Module模块,构造自己的损失函数
# 默认情况下,loss会基于element平均,如果size_average=False的话,loss会被累加。
# BCELoss二分类的交叉熵
criterion = torch.nn.BCELoss(size_average=False)
优化器
根据自己的使用情况及测试集反馈构造自己的优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
训练
根据训练前的平均损失MSE和训练若干epoch之后的平均损失做对比,汇聚成图表,可以观察到模型是否收敛(达到最优)或是过拟合。
过拟合
训练数据过多、模型过于复杂、测试样本过少,使得通过大量训练后的模型能够精准的预测测试样本的结果,而非正常路径的检测结果
# training cycle forward, backward, update
for epoch in range(1000):
y_pred = model(x_data)
loss = criterion(y_pred, y_data)
print(epoch, loss.item())
optimizer.zero_grad()
loss.backward()
optimizer.step()