---
# System prepended metadata

title: Một số tip hay

---

#  Một số tip hay

### Deterministic Behavior

```python=
import torch
import numpy as np
import random

seed = 42
torch.mannual_seed(seed)
np.random.seed(seed)
random.seed(seed)

# if using cuda
torch.cuda.mannual_seed_all(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
```


---

### Mixed Precision

```python=
import torch
# Creates once at the beginning of training
scaler = torch.cuda.amp.GradScaler()

for data, label in data_iter:
   optimizer.zero_grad()
   # Casts operations to mixed precision
   with torch.cuda.amp.autocast():
      loss = model(data)

   # Scales the loss, and calls backward()
   # to create scaled gradients
   scaler.scale(loss).backward()

   # Unscales gradients and calls
   # or skips optimizer.step()
   scaler.step(optimizer)

   # Updates the scale for next iteration
   scaler.update()
```


---

### Oversampling data

```python=
path = '/content'
data = datasets.FashionMNIST(path, transform=transforms.ToTensor(), download=True)
len = data.__len__()
weights = []

for i in range(len):
  weights.append(np.random.randint(1, 100))

sampler = WeightedRandomSampler(weights=weights, num_samples=len, replacement=True)
dataLoader = DataLoader(dataset=data, batch_size=10, shuffle=False, sampler=sampler)
```