To activate the projector on TensorBoard in PyTorch, you need to follow these steps:
1. Import the necessary libraries:
```python
from torch.utils.tensorboard import SummaryWriter
import torch.utils.data
import torchvision.datasets as dset
import torchvision.transforms as transforms
```
2. Define the `SummaryWriter` object and set the log directory:
```python
writer = SummaryWriter(log_dir=log_dir)
```
3. Load your data:
```python
# Load data
train_loader = torch.utils.data.DataLoader(
dset.CIFAR10(root=./data, train=True, download=True,
transform=transforms.Compose([
transforms.Resize(224),
transforms.ToTensor(),
])),
batch_size=batch_size, shuffle=True, num_workers=num_workers)
```
4. Define the projector:
```python
# Define projector
def get_features(model, dataloader, num_samples):
features = []
labels = []
for i, (x, y) in enumerate(dataloader):
x = x.to(device)
y = y.to(device)
if i * batch_size > num_samples:
break
feature = model(x)
features.append(feature.cpu().detach().numpy())
labels.append(y.cpu().detach().numpy())
features = np.vstack(features)
labels = np.concatenate(labels)
return features, labels
features, labels = get_features(model, dataloader=train_loader, num_samples=1000)
# Generate tensor with data
features_tensor = torch.from_numpy(features)
labels_tensor = torch.from_numpy(labels)
images = torchvision.utils.make_grid(features_tensor)
metadata_file = metadata.tsv
# Write to TensorBoard
writer.add_embedding(features_tensor, metadata=labels_tensor, label_img=images, global_step=None, metadata_header=None)
```
5. Run `tensorboard`:
```sh
tensorboard --logdir log_dir
```
6. Open `http://localhost:6006` in your browser and navigate to the "Projector" tab.
7. The projector should be running and displaying your embeddings. |