Skip to content

Instantly share code, notes, and snippets.

@Tikiten
Tikiten / sequential_model.py
Created August 13, 2020 08:28
[sequential_model] #建立sequential模型 #sequential_model
#方法一
network1 = nn.Sequential(
nn.Flatten(start_dim=1)
,nn.Linear(in_features, out_features)
,nn.Linear(out_features, out_classes)
)
network1
'''Sequential(
(0): Flatten()
(1): Linear(in_features=784, out_features=392, bias=True)
@Tikiten
Tikiten / run_manager.py
Last active August 1, 2024 07:00
[run_manager] #管理运行的一系列设置包括计算正确率可视化等 #run_manager #Training_Loop_Refactoring #Simultaneous_Hyperparameter_Testing
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from IPython.display import display, clear_output
@Tikiten
Tikiten / run_builder.py
Last active April 3, 2023 11:53
[run_builder] #python #pytorch #参数管理 #超参数组合实验 #超参数
from collections import OrderedDict
from collections import namedtuple
from itertools import product
class RunBuilder():
@staticmethod
def get_runs(params):
Run = namedtuple('Run', params.keys())
@Tikiten
Tikiten / Hyperparameters_tuning.py
Created August 12, 2020 09:39
[Hyperparameters_tuning] #python #pytorch #超参数微调测试 #超参数 #fune_tuning
from itertools import product
parameters = dict(
lr = [.01, .001]
,batch_size = [100, 1000]
,shuffle = [True, False]
)
for lr, batch_size, shuffle in product(*para_values):
print(lr, batch_size, shuffle)
'''0.01 100 True
@Tikiten
Tikiten / tensorboard_examples.py
Last active April 3, 2023 11:53
[some examples about how to use tensorboard] #python #pytorch #使用tensorboard的几个例子 #tensorboard #visualization #可视化
from torch.utils.tensorboard import SummaryWriter
#first example
tb = SummaryWriter()
images, labels = next(iter(train_loader))
grid = torchvision.utils.make_grid(images)
tb.add_image('images', grid)
tb.add_graph(network, images) #show the network
@Tikiten
Tikiten / get_all_preds.py
Last active April 3, 2023 11:54
[Getting predictions for the entire training set to draw confusion matrix] #python #pytorch #得到整个训练集的预测来画混淆矩阵和PR曲线 #混淆矩阵 #PR曲线 #PR_curve #visualization #可视化
import scikitplot as skplt
import matplotlib.pyplot as plt
def get_all_preds(model, loader):
all_preds = torch.tensor([])
for batch in loader:
images, labels = batch
preds = model(images)
all_preds = torch.cat(
@Tikiten
Tikiten / train_frame.py
Last active April 3, 2023 11:54
[train_frame] #python #pytorch #epoch_iteration_训练框架
for epoch in range(5):
total_loss = 0
total_correct = 0
for batch in train_loader:
images, labels = batch
preds = network(images)
loss = F.cross_entropy(preds, labels)
@Tikiten
Tikiten / get_num_correct.py
Created August 12, 2020 08:34
[get_num_correct] #python #pytorch #计算模型准确率
def get_num_correct(preds, labels):
return preds.argmax(dim=1).eq(labels).sum().item()
@Tikiten
Tikiten / parameter_initialize.py
Created August 12, 2020 03:28
[parameter_initialize] #python #pytorch #网络中参数初始化
class ResNet(nn.Module):
def __init__(self, block, n_size, num_classes=10):
super(ResNet, self).__init__()
self.inplane = 16
self.conv1 = nn.Conv2d(3, self.inplane, kernel_size=3, stride=1, padding=1, bias=False)
self.bn1 = nn.BatchNorm2d(self.inplane)
self.relu = nn.ReLU(inplace=True)
self.layer1 = self._make_layer(block, 16, blocks=n_size, stride=1)
self.layer2 = self._make_layer(block, 32, blocks=n_size, stride=2)
self.layer3 = self._make_layer(block, 64, blocks=n_size, stride=2)
@Tikiten
Tikiten / accumulating_gradients.py
Last active April 3, 2023 11:54
[accumulating gradients] #python #pytorch #梯度累加实现大的batch_size
#当想要用大批量进行训练,但是 GPU 资源有限,此时可以通过梯度累加(accumulating gradients)的方式进行。
#梯度累加的基本思想在于,在优化器更新参数前,也就是执行 optimizer.step() 前,进行多次反向传播,是的梯度累计值自动保存在 parameter.grad 中,最后使用累加的梯度进行参数更新。
#这个在PyTorch中特别容易实现,因为PyTorch中,梯度值本身会保留,除非我们调用 model.zero_grad() 或 optimizer.zero_grad()。
model.zero_grad() # 重置保存梯度值的张量
for i, (inputs, labels) in enumerate(training_set):
predictions = model(inputs) # 前向计算
loss = loss_function(predictions, labels) # 计算损失函数
loss.backward() # 计算梯度