#!/usr/bin/env python3

# dropout illustration

import torch
import torch.nn as nn

#torch.manual_seed(42)           # manual seeding

dropout = nn.Dropout(p=0.5)     # dropout layer instantiation

input_tensor = torch.arange(12.0).view((3,4)) + 1.0

dropout.train()                 # start training mode
output_train = dropout(input_tensor)

dropout.eval()                  # evaluation mode (no scaling)
output_eval = dropout(input_tensor)

print("\n# original tensor")
print(input_tensor)

print("\n# after Dropout in training mode (with scaling)")
print(output_train)

print("\n# after Dropout in evaluation mode")
print(output_eval)
