набор данных
В глубоком обучении качество алгоритма отражается в результатах обучения набора тестов, а также способствует обновлению и повторению алгоритма.
Часто используемые наборы данных
Ссылка на ссылку:zhuanlan.zhihu.com/p/55775309
- Datafoundatin
- Kesai.com
- Kaggle
- Набор данных Майкрософт
Построить модель
Если модель более сложная, вы можете записать ее в новый файл .py и импортировать model.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 до обучения и средним потерям после обучения за несколько эпох они агрегируются в график, и можно наблюдать, сходится ли модель (достигает оптимума) или переобучается.
переоснащение
Слишком много обучающих данных, слишком сложные модели и слишком мало тестовых выборок, чтобы модель после большого количества тренировок могла точно предсказывать результаты тестовых выборок, а не результаты обнаружения нормального пути
# 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()