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