|
@@ -9,6 +9,8 @@ from keras.wrappers.scikit_learn import KerasRegressor
|
|
|
from keras.optimizers import Adam
|
|
|
import numpy as np
|
|
|
import matplotlib.pyplot as plt
|
|
|
+from keras.layers import PReLU
|
|
|
+
|
|
|
|
|
|
#function to test performance on testset
|
|
|
def calc_mre(y_true, y_pred):
|
|
@@ -26,35 +28,96 @@ def relerr_loss(y_true, y_pred):
|
|
|
y_err_f = K.flatten(y_err)
|
|
|
return K.sum(y_err_f)
|
|
|
|
|
|
-def conv1dmodel(in_size=8, out_size=256, ker_size=3):
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+def conv1dmodel(in_size=8,
|
|
|
+ out_size=256,
|
|
|
+ c1_nf=64,
|
|
|
+ clayers=2,
|
|
|
+ ker_size=3):
|
|
|
# create model
|
|
|
model = Sequential()
|
|
|
|
|
|
model.add(Dense(out_size, input_dim=in_size,
|
|
|
kernel_initializer='normal',
|
|
|
- name='first' ))
|
|
|
- model.add(Activation('relu'))
|
|
|
-
|
|
|
+ name='first', activation='relu' ))
|
|
|
+
|
|
|
model.add(Reshape((4, 64), name='Reshape1'))
|
|
|
model.add(UpSampling1D(size=2, name='Up1'))
|
|
|
|
|
|
- model.add(Conv1D(filters=64,
|
|
|
+ model.add(Conv1D(filters=c1_nf,
|
|
|
kernel_size=ker_size, strides=1, padding='same',
|
|
|
dilation_rate=1, name='Conv1',
|
|
|
- kernel_initializer='normal'))
|
|
|
- model.add(Activation('relu'))
|
|
|
+ kernel_initializer='normal', activation='relu'))
|
|
|
+
|
|
|
+
|
|
|
+ for cl in np.arange(clayers):
|
|
|
+ model.add(Conv1D(filters=32,
|
|
|
+ kernel_size=ker_size,
|
|
|
+ strides=1,
|
|
|
+ padding='same',
|
|
|
+ dilation_rate=1,
|
|
|
+ name='Conv'+ str(cl+2),
|
|
|
+ kernel_initializer='normal',
|
|
|
+ activation='relu'))
|
|
|
+
|
|
|
+ model.add(Flatten())
|
|
|
+
|
|
|
+ model.compile(loss=relerr_loss, optimizer='adam', metrics=[calc_mre_K])
|
|
|
+ return model
|
|
|
+
|
|
|
+
|
|
|
+def convprel(in_size=8,
|
|
|
+ out_size=256,
|
|
|
+ c1_nf=64,
|
|
|
+ clayers=2,
|
|
|
+ ker_size=3):
|
|
|
+
|
|
|
+ # create model
|
|
|
+ model = Sequential()
|
|
|
|
|
|
- model.add(Conv1D(filters=32,
|
|
|
+ model.add(Dense(out_size, input_dim=in_size,
|
|
|
+ kernel_initializer='normal',
|
|
|
+ name='first'))
|
|
|
+ model.add(PReLU(alpha_initializer='zeros', alpha_regularizer=None))
|
|
|
+ model.add(Reshape((4, 64), name='Reshape1'))
|
|
|
+ model.add(UpSampling1D(size=2, name='Up1'))
|
|
|
+
|
|
|
+ model.add(Conv1D(filters=c1_nf,
|
|
|
kernel_size=ker_size, strides=1, padding='same',
|
|
|
- dilation_rate=1, name='Conv2',
|
|
|
+ dilation_rate=1, name='Conv1',
|
|
|
kernel_initializer='normal'))
|
|
|
- model.add(Activation('relu'))
|
|
|
+ model.add(PReLU(alpha_initializer='zeros', alpha_regularizer=None))
|
|
|
+
|
|
|
|
|
|
+ for cl in np.arange(clayers):
|
|
|
+ model.add(Conv1D(filters=32,
|
|
|
+ kernel_size=ker_size,
|
|
|
+ strides=1,
|
|
|
+ padding='same',
|
|
|
+ dilation_rate=1,
|
|
|
+ name='Conv'+ str(cl+2),
|
|
|
+ kernel_initializer='normal'))
|
|
|
+ model.add(PReLU(alpha_initializer='zeros', alpha_regularizer=None))
|
|
|
+
|
|
|
+
|
|
|
model.add(Flatten())
|
|
|
|
|
|
- model.compile(loss=relerr_loss, optimizer='adam', metrics=['accuracy', calc_mre_K])
|
|
|
+ model.compile(loss=relerr_loss, optimizer='adam', metrics=[calc_mre_K])
|
|
|
return model
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
def fullycon( in_size=8, out_size=250, N_hidden=3, N_neurons=250, N_gpus=1):
|
|
|
"""
|
|
|
Returns a fully-connected model which will take a normalized size vector and return a
|
|
@@ -75,10 +138,10 @@ def fullycon( in_size=8, out_size=250, N_hidden=3, N_neurons=250, N_gpus=1):
|
|
|
|
|
|
# Compile model
|
|
|
if N_gpus == 1:
|
|
|
- model.compile(loss=relerr_loss, optimizer='adam', metrics=['accuracy'])
|
|
|
+ model.compile(loss=relerr_loss, optimizer='adam', metrics=[calc_mre_K])
|
|
|
else:
|
|
|
gpu_list = ["gpu(%d)" % i for i in range(N_gpus)]
|
|
|
- model.compile(loss=relerr_loss, optimizer='adam', metrics=['accuracy'], context = gpu_list)
|
|
|
+ model.compile(loss=relerr_loss, optimizer='adam', metrics=[calc_mre_K], context = gpu_list)
|
|
|
return model
|
|
|
|
|
|
#staging area for new models
|