Skip to content
Snippets Groups Projects
Commit 7a1a1f97 authored by Yandi's avatar Yandi
Browse files

bidirectional_lstm_with_MEAN_STD

parent 9e3191da
Branches
No related tags found
1 merge request!1Master into main
......@@ -11,6 +11,12 @@ Dataset:
_ENCODING_INDEX: "I" # h(short) with 2 bytes should be sufficient
_ENCODING_OFFSET_FORMAT: ""
_ENCODING_ENDIAN: "<"
Transform: dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_normalize_with_train_statistics(MEAN, STD))
# Available transforms:
# dataloader.transform_remove_space_time()
# dataloader.transform_normalize_with_train_statistics(MEAN, STD)
# dataloader.transform_min_max_scaling(MIN, MAX)
# dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX))
# Data Transformation
ApproximativeStats: True
......@@ -31,6 +37,7 @@ ApproximativeMini: "torch.tensor([ 4.1479e+01, 6.0000e+00, 1.0182e+00, 1.2623
7.9218e+00, 1.0000e-11, 3.7171e+01, 2.5584e+00, 1.2075e+01,
-1.2436e+00, -9.9256e-01, -8.8131e-01])"
#Optimizer selection
Optimizer: Adam # in {Adam}
......@@ -40,7 +47,7 @@ Training:
#Model selection
Model:
Name: CNN1D
Name: BidirectionalLSTM
#choose in {LinearRegression, BidirectionalLSTM, RNN}
#Model parameters selection
......@@ -51,9 +58,10 @@ LinearRegression:
Initialization: init_he
BidirectionalLSTM:
HiddenSize: 16
NumLayers: 1
Dropout: 0.2
HiddenSize: 32
NumLayers: 4
LSTMDropout: 0
FFNDropout: 0.2
NumFFN: 8
Initialization: None
......
No preview for this file type
......@@ -59,6 +59,8 @@ if __name__ == "__main__":
log_freq = int(cfg["Wandb"]["log_freq"])
log_interval = int(cfg["Wandb"]["log_interval"])
dataset_transform = cfg["Dataset"]["Transform"]
if not args.no_wandb:
wandb.init(entity = "wherephytoplankton", project = "Kaggle phytoplancton", config = {"batch_size": batch_size, "epochs": epochs})
......@@ -93,8 +95,8 @@ if __name__ == "__main__":
valid_ratio,
overwrite_index = True,
max_num_samples=max_num_samples,
train_transform=dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX)),
valid_transform=dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX))
train_transform= eval(dataset_transfom),
valid_transform=eval(dataset_transfom)
)
if use_cuda :
......@@ -133,4 +135,4 @@ if __name__ == "__main__":
utils.write_summary(logdir, network, optimizer, val_loss)
create_submission.create_submission(network, dataloader.composite_transform(dataloader.transform_remove_space_time(), dataloader.transform_min_max_scaling(MIN, MAX)), device, rootDir, logdir)
create_submission.create_submission(network, eval(dataset_transfom), device, rootDir, logdir)
......@@ -76,10 +76,11 @@ class BidirectionalLSTM(nn.Module):
super(BidirectionalLSTM, self).__init__()
self.hidden_size = cfg["BidirectionalLSTM"]["HiddenSize"]
self.num_layers = cfg["BidirectionalLSTM"]["NumLayers"]
self.dropout = cfg["BidirectionalLSTM"]["Dropout"]
self.LSTM_dropout = cfg["BidirectionalLSTM"]["LSTMDropout"]
self.FFN_dropout = cfg["DidirectionalLSTM"]["FFNDropout"]
self.num_ffn = cfg["BidirectionalLSTM"]["NumFFN"]
self.lstm = nn.LSTM(input_size, self.hidden_size, self.num_layers, batch_first = True, bidirectional =True, dropout = 0.2)
self.lstm = nn.LSTM(input_size, self.hidden_size, self.num_layers, batch_first = True, bidirectional =True, dropout = self.LSTM_dropout)
self.fc = nn.Sequential()
for layer in range(self.num_ffn):
......@@ -92,7 +93,7 @@ class BidirectionalLSTM(nn.Module):
)
self.fc.add_module(
f"dropout_{layer}",
nn.Dropout(p=self.dropout)
nn.Dropout(p=self.FFN_dropout)
)
self.fc.add_module(
"last_linear",
......@@ -120,16 +121,15 @@ class CNN1D(torch.nn.Module):
def __init__(self, cfg, num_inputs):
super(CNN1D, self).__init__()
self.model = torch.nn.Sequential(
*conv_block(num_inputs, 6, 0.01),
*conv_block(64, 7, 0.01),
*conv_block(128,8,0.01)
*conv_block(num_inputs, 32),
*conv_block(32, 128)
)
self.avg_pool = torch.nn.AdaptiveAvgPool1d(1)
self.fc = nn.Sequential(
nn.Linear(256, 32),
self.ffn = nn.Sequential(
nn.Linear(128, 128),
nn.ReLU(),
nn.Linear(32,cfg["Dataset"]["num_days"])
nn.Linear(128,cfg["Dataset"]["num_days"])
)
def forward(self, x):
......@@ -137,25 +137,21 @@ class CNN1D(torch.nn.Module):
out = self.model(x)
print(f"This is after CNN : {out}")
out = self.avg_pool(out)
out = out.view([out.shape[0], -1])
out = self.fc(out)
#print(f"{out.shape} this is out.shape")
out = self.ffn(out)
out = out.view([out.shape[0], out.shape[1], 1])
return out
def conv_block(in_channels, power, dropout_p):
def conv_block(in_channels, out_channels):
return [
torch.nn.Conv1d(in_channels, 2**power, 16),
#torch.nn.BatchNorm1d(2**power),
torch.nn.LeakyReLU(),
torch.nn.Dropout(p=dropout_p),
torch.nn.Conv1d(2**power, 2**power, 8),
torch.nn.BatchNorm1d(2**power),
torch.nn.LeakyReLU(),
#torch.nn.Dropout(p=dropout_p),
torch.nn.MaxPool1d(2, stride = 1)
torch.nn.Conv1d(in_channels, out_channels, kernel_size = 3, stride = 1, padding = 1),
torch.nn.ReLU(),
torch.nn.BatchNorm1d(out_channels),
]
# Initialization
......
No preview for this file type
No preview for this file type
run-20230204_013952-5w9xw0aw/logs/debug-internal.log
\ No newline at end of file
run-20230204_131220-udsbqzli/logs/debug-internal.log
\ No newline at end of file
run-20230204_013952-5w9xw0aw/logs/debug.log
\ No newline at end of file
run-20230204_131220-udsbqzli/logs/debug.log
\ No newline at end of file
run-20230204_013952-5w9xw0aw
\ No newline at end of file
run-20230204_131220-udsbqzli
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment