Skip to content

Commit

Permalink
Fixed normalization of outputs.
Browse files Browse the repository at this point in the history
  • Loading branch information
tremblaybenoit committed Oct 20, 2020
1 parent 56671bd commit 7b566fa
Show file tree
Hide file tree
Showing 10 changed files with 210 additions and 170 deletions.
42 changes: 23 additions & 19 deletions JSWSC_Tremblay_et_al_2020/MURaM-ARs/d_1000km/train_deepvel.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def __init__(self, root, noise, option, norm_filename='network/simulation_proper
self.vy_d_1000km_stddev = tmp['vy_d_1000km_stddev']

def residual(self, inputs):

x = Conv2D(self.n_filters, (self.kernel_size, self.kernel_size), strides=(1, 1), padding='same',
kernel_initializer='he_normal')(inputs)
x = BatchNormalization()(x)
Expand All @@ -179,41 +179,41 @@ def residual(self, inputs):
kernel_initializer='he_normal')(x)
x = BatchNormalization()(x)
x = add([x, inputs])

return x

def define_network(self):
print("Setting up network...")

inputs = Input(shape=(self.nx, self.ny, self.n_inputs))
conv = Conv2D(self.n_filters, (self.kernel_size, self.kernel_size), strides=(1, 1), padding='same',
kernel_initializer='he_normal', activation='relu')(inputs)

x = self.residual(conv)
for i in range(self.n_conv_layers):
x = self.residual(x)

x = Conv2D(self.n_filters, (self.kernel_size, self.kernel_size), strides=(1, 1), padding='same',
kernel_initializer='he_normal')(x)
x = BatchNormalization()(x)
x = add([x, conv])

final = Conv2D(self.n_outputs, (1, 1), strides=(1, 1), padding='same',
kernel_initializer='he_normal', activation='linear')(x)

self.model = Model(inputs=inputs, outputs=final)

json_string = self.model.to_json()
f = open('{0}_model.json'.format(self.root), 'w')
f.write(json_string)
f.close()

def compile_network(self):
def compile_network(self):
self.model.compile(loss='mse', optimizer=Adam(lr=1e-4))

def read_network(self):
print("Reading previous network...")

f = open('{0}_model.json'.format(self.root), 'r')
json_string = f.read()
f.close()
Expand All @@ -223,11 +223,11 @@ def read_network(self):

def train(self, n_iterations):
print("Training network...")

# Callbacks
self.checkpointer = ModelCheckpoint(filepath="{0}_weights.hdf5".format(self.root), verbose=1,
save_best_only=True)

# Load loss History
n_val_loss = 0
if self.option == 'continue':
Expand Down Expand Up @@ -273,6 +273,10 @@ def train(self, n_iterations):
self.vx_d_1000km_min) / (self.vx_d_1000km_max - self.vx_d_1000km_min)
output_train[:, :, :, 1] = (output_train[:, :, :, 1] -
self.vy_d_1000km_min) / (self.vy_d_1000km_max - self.vy_d_1000km_min)
output_valid[:, :, :, 0] = (output_valid[:, :, :, 0] -
self.vx_d_1000km_min) / (self.vx_d_1000km_min - self.vx_d_1000km_min)
output_valid[:, :, :, 1] = (output_valid[:, :, :, 1] -
self.vy_d_1000km_min) / (self.vy_d_1000km_min - self.vy_d_1000km_min)

# Training process
self.model.fit(input_train, output_train, batch_size=self.batch_size, epochs=n_iterations, verbose=1,
Expand All @@ -298,7 +302,7 @@ def train(self, n_iterations):


if __name__ == '__main__':

parser = argparse.ArgumentParser(description='Train DeepVel')
parser.add_argument('-o', '--out', help='Output files')
parser.add_argument('-e', '--epochs', help='Number of epochs', default=10)
Expand All @@ -308,21 +312,21 @@ def train(self, n_iterations):
help='File containing the simulation properties for normalization',
default='network/simulation_properties.npz')
parsed = vars(parser.parse_args())

root = parsed['out']
nEpochs = int(parsed['epochs'])
option = parsed['action']
noise = parsed['noise']
norm_filename = parsed['properties']

out = train_deepvel(root, noise, option, norm_filename)

if option == 'start':
out.define_network()

if option == 'continue':
out.read_network()

if option == 'start' or option == 'continue':
out.compile_network()
out.train(nEpochs)
34 changes: 19 additions & 15 deletions JSWSC_Tremblay_et_al_2020/MURaM-ARs/d_1000km/train_deepvelu.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,10 +168,10 @@ def __init__(self, root, noise, option, norm_filename='network/simulation_proper
self.vy_d_1000km_var = tmp['vy_d_1000km_var']
self.vy_d_1000km_median = tmp['vy_d_1000km_median']
self.vy_d_1000km_stddev = tmp['vy_d_1000km_stddev']

def define_network(self):
print("Setting up network...")

inputs = Input(shape=(self.nx, self.ny, self.n_inputs))

x = inputs
Expand Down Expand Up @@ -256,20 +256,20 @@ def define_network(self):

final = Conv2D(self.n_components, (1, 1), strides=(1, 1), padding='same',
kernel_initializer='he_normal', activation='linear')(upconv1)

self.model = Model(inputs=inputs, outputs=final)

json_string = self.model.to_json()
f = open('{0}_model.json'.format(self.root), 'w')
f.write(json_string)
f.close()

def compile_network(self):
def compile_network(self):
self.model.compile(loss='mse', optimizer=Adam(lr=1e-4))

def read_network(self):
print("Reading previous network...")

f = open('{0}_model.json'.format(self.root), 'r')
json_string = f.read()
f.close()
Expand All @@ -279,11 +279,11 @@ def read_network(self):

def train(self, n_iterations):
print("Training network...")

# Callbacks
self.checkpointer = ModelCheckpoint(filepath="{0}_weights.hdf5".format(self.root), verbose=1,
save_best_only=True)

# Load loss History
n_val_loss = 0
if self.option == 'continue':
Expand Down Expand Up @@ -329,6 +329,10 @@ def train(self, n_iterations):
self.vx_d_1000km_min) / (self.vx_d_1000km_max - self.vx_d_1000km_min)
output_train[:, :, :, 1] = (output_train[:, :, :, 1] -
self.vy_d_1000km_min) / (self.vy_d_1000km_max - self.vy_d_1000km_min)
output_valid[:, :, :, 0] = (output_valid[:, :, :, 0] -
self.vx_d_1000km_min) / (self.vx_d_1000km_min - self.vx_d_1000km_min)
output_valid[:, :, :, 1] = (output_valid[:, :, :, 1] -
self.vy_d_1000km_min) / (self.vy_d_1000km_min - self.vy_d_1000km_min)

# Training process
self.model.fit(input_train, output_train, batch_size=self.batch_size, epochs=n_iterations, verbose=1,
Expand All @@ -354,7 +358,7 @@ def train(self, n_iterations):


if __name__ == '__main__':

parser = argparse.ArgumentParser(description='Train DeepVel')
parser.add_argument('-o', '--out', help='Output files')
parser.add_argument('-e', '--epochs', help='Number of epochs', default=10)
Expand All @@ -364,21 +368,21 @@ def train(self, n_iterations):
help='File containing the simulation properties for normalization',
default='network/simulation_properties.npz')
parsed = vars(parser.parse_args())

root = parsed['out']
nEpochs = int(parsed['epochs'])
option = parsed['action']
noise = parsed['noise']
norm_filename = parsed['properties']

out = train_deepvel(root, noise, option, norm_filename)

if option == 'start':
out.define_network()

if option == 'continue':
out.read_network()

if option == 'start' or option == 'continue':
out.compile_network()
out.train(nEpochs)
42 changes: 23 additions & 19 deletions JSWSC_Tremblay_et_al_2020/MURaM-ARs/tau_0.001/train_deepvel.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def __init__(self, root, noise, option, norm_filename='network/simulation_proper
self.vy_d_1000km_stddev = tmp['vy_d_1000km_stddev']

def residual(self, inputs):

x = Conv2D(self.n_filters, (self.kernel_size, self.kernel_size), strides=(1, 1), padding='same',
kernel_initializer='he_normal')(inputs)
x = BatchNormalization()(x)
Expand All @@ -179,41 +179,41 @@ def residual(self, inputs):
kernel_initializer='he_normal')(x)
x = BatchNormalization()(x)
x = add([x, inputs])

return x

def define_network(self):
print("Setting up network...")

inputs = Input(shape=(self.nx, self.ny, self.n_inputs))
conv = Conv2D(self.n_filters, (self.kernel_size, self.kernel_size), strides=(1, 1), padding='same',
kernel_initializer='he_normal', activation='relu')(inputs)

x = self.residual(conv)
for i in range(self.n_conv_layers):
x = self.residual(x)

x = Conv2D(self.n_filters, (self.kernel_size, self.kernel_size), strides=(1, 1), padding='same',
kernel_initializer='he_normal')(x)
x = BatchNormalization()(x)
x = add([x, conv])

final = Conv2D(self.n_outputs, (1, 1), strides=(1, 1), padding='same',
kernel_initializer='he_normal', activation='linear')(x)

self.model = Model(inputs=inputs, outputs=final)

json_string = self.model.to_json()
f = open('{0}_model.json'.format(self.root), 'w')
f.write(json_string)
f.close()

def compile_network(self):
def compile_network(self):
self.model.compile(loss='mse', optimizer=Adam(lr=1e-4))

def read_network(self):
print("Reading previous network...")

f = open('{0}_model.json'.format(self.root), 'r')
json_string = f.read()
f.close()
Expand All @@ -223,11 +223,11 @@ def read_network(self):

def train(self, n_iterations):
print("Training network...")

# Callbacks
self.checkpointer = ModelCheckpoint(filepath="{0}_weights.hdf5".format(self.root), verbose=1,
save_best_only=True)

# Load loss History
n_val_loss = 0
if self.option == 'continue':
Expand Down Expand Up @@ -273,6 +273,10 @@ def train(self, n_iterations):
self.vx_tau_0001_min) / (self.vx_tau_0001_max - self.vx_tau_0001_min)
output_train[:, :, :, 1] = (output_train[:, :, :, 1] -
self.vy_tau_0001_min) / (self.vy_tau_0001_max - self.vy_tau_0001_min)
output_valid[:, :, :, 0] = (output_valid[:, :, :, 0] -
self.vx_tau_0001_min) / (self.vx_tau_0001_max - self.vx_tau_0001_min)
output_valid[:, :, :, 1] = (output_valid[:, :, :, 1] -
self.vy_tau_0001_min) / (self.vy_tau_0001_max - self.vy_tau_0001_min)

# Training process
self.model.fit(input_train, output_train, batch_size=self.batch_size, epochs=n_iterations, verbose=1,
Expand All @@ -298,7 +302,7 @@ def train(self, n_iterations):


if __name__ == '__main__':

parser = argparse.ArgumentParser(description='Train DeepVel')
parser.add_argument('-o', '--out', help='Output files')
parser.add_argument('-e', '--epochs', help='Number of epochs', default=10)
Expand All @@ -308,21 +312,21 @@ def train(self, n_iterations):
help='File containing the simulation properties for normalization',
default='network/simulation_properties.npz')
parsed = vars(parser.parse_args())

root = parsed['out']
nEpochs = int(parsed['epochs'])
option = parsed['action']
noise = parsed['noise']
norm_filename = parsed['properties']

out = train_deepvel(root, noise, option, norm_filename)

if option == 'start':
out.define_network()

if option == 'continue':
out.read_network()

if option == 'start' or option == 'continue':
out.compile_network()
out.train(nEpochs)
Loading

0 comments on commit 7b566fa

Please sign in to comment.