Skip to content

Instantly share code, notes, and snippets.

@prl900
Created February 23, 2019 10:12
Show Gist options
  • Save prl900/4be8769b8d765209abb7905c1e5a77e9 to your computer and use it in GitHub Desktop.
Save prl900/4be8769b8d765209abb7905c1e5a77e9 to your computer and use it in GitHub Desktop.
from keras.models import Sequential
from keras.layers import BatchNormalization, Conv2D, Conv2DTranspose
from keras.optimizers import Adam
import matplotlib.pyplot as plt
import numpy as np
def GetModel():
""" Encoder-Decoder Approach """
"""
model = Sequential()
model.add(BatchNormalization(axis=3, input_shape=(80, 120, 3)))
model.add(Conv2D(64, (5, 5), strides=(2, 2), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(128, (3, 3), strides=(2, 2), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(256, (3, 3), strides=(2, 2), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2DTranspose(128, (3, 3), strides=(2, 2), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2DTranspose(64, (3, 3), strides=(2, 2), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2DTranspose(1, (5, 5), strides=(2, 2), activation='relu', padding='same'))
"""
""" Constant size convolution Approach """
model = Sequential()
model.add(BatchNormalization(axis=3, input_shape=(80, 120, 3)))
model.add(Conv2D(64, (5, 5), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(128, (5, 5), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(256, (5, 5), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(128, (5, 5), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(64, (5, 5), activation='relu', padding='same'))
model.add(BatchNormalization(axis=3))
model.add(Conv2D(1, (5, 5), activation='relu', padding='same'))
#model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001), metrics=['accuracy'])
#model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.001), metrics=['mse'])
model.compile(loss='mean_absolute_error', optimizer=Adam(lr=0.001), metrics=['mae'])
print(model.summary())
return model
x = np.load("3zlevels.npy")
y = 1000*np.expand_dims(np.load("full_tp_1980_2016.npy"), axis=3)#[44000:, :], axis=3)
print("rain mean", y.mean())
print(x.shape)
print(y.shape)
x_train = x[:4000, :, :, :]
y_train = y[:4000, :]
x_test = x[4000:5000, :, :, :]
y_test = y[4000:5000, :]
print("train x mean", x[:4000, :].mean())
print("test x mean", x[4000:5000, :].mean())
model = GetModel()
history = model.fit(x_train, y_train, epochs=30, verbose=1, validation_data=(x_test, y_test))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment