added new model, with different hyperparameter from dd3d git

master
Nicolasticot 2019-10-28 23:50:05 +01:00
parent 860e797732
commit bb9a7f549e
2 changed files with 82 additions and 9 deletions

View File

@ -16,7 +16,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 6,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -28,8 +28,9 @@
"from keras.layers import Dense, Flatten, TimeDistributed, Dropout\n", "from keras.layers import Dense, Flatten, TimeDistributed, Dropout\n",
"from keras import Input, Model\n", "from keras import Input, Model\n",
"from keras.layers import add, Activation\n", "from keras.layers import add, Activation\n",
"from keras.layers.advanced_activations import LeakyReLU\n",
"#from keras.utils import plot_model # Needs pydot.\n", "#from keras.utils import plot_model # Needs pydot.\n",
"from keras.layers import Conv3D, MaxPooling3D" "from keras.layers import Convolution3D, MaxPooling3D"
] ]
}, },
{ {
@ -162,6 +163,43 @@
" return model" " return model"
] ]
}, },
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def model_new(): # créer un objet modèle\n",
" \"\"\"\n",
" Return a simple sequentiel model\n",
" \n",
" Returns :\n",
" - model : keras.Model\n",
" \"\"\"\n",
" inputs = Input(shape=(14,32,32,32))\n",
" conv_1 = Convolution3D(filters=64, kernel_size=5, padding=\"valid\", data_format='channels_first')(inputs)\n",
" activation_1 = LeakyReLU(alpha = 0.1)(conv_1)\n",
" drop_1 = Dropout(0.2)(activation_1)\n",
" conv_2 = Convolution3D(filters=64, kernel_size=3, padding=\"valid\", data_format='channels_first')(drop_1)\n",
" activation_2 = LeakyReLU(alpha = 0.1)(conv_2)\n",
" maxpool = MaxPooling3D(pool_size=(2,2,2),\n",
" strides=None,\n",
" padding='valid',\n",
" data_format='channels_first')(activation_2)\n",
" drop_2 = Dropout(0.4)(maxpool)\n",
" flatters = Flatten()(drop_2)\n",
" dense = Dense(128)(flatters)\n",
" activation_3 = LeakyReLU(alpha = 0.1)(dense)\n",
" drop_3 = Dropout(0.4)(activation_3)\n",
" output = Dense(3, activation='softmax')(drop_3)\n",
" model = Model(inputs=inputs, outputs=output)\n",
" my_opt = optimizers.Adam(learning_rate=0.000001, beta_1=0.9, beta_2=0.999, amsgrad=False)\n",
" print(model.summary)\n",
" model.compile(optimizer=my_opt, loss=\"categorical_crossentropy\",\n",
" metrics=[\"accuracy\"])\n",
" return model"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
@ -250,7 +288,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"my_model = model_light()" "my_model = model_new()"
] ]
}, },
{ {
@ -270,7 +308,7 @@
"outputs": [], "outputs": [],
"source": [ "source": [
"history_mild_2mp = mild_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)\n", "history_mild_2mp = mild_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)\n",
"my_model.save('light_model_2mp_e30_b32.h5')" "my_model.save('new_model_e30_b32_t1000.h5')"
] ]
}, },
{ {

View File

@ -5,7 +5,7 @@
# ## Importing library # ## Importing library
# In[ ]: # In[6]:
import numpy as np import numpy as np
@ -16,8 +16,9 @@ from keras import optimizers, callbacks
from keras.layers import Dense, Flatten, TimeDistributed, Dropout from keras.layers import Dense, Flatten, TimeDistributed, Dropout
from keras import Input, Model from keras import Input, Model
from keras.layers import add, Activation from keras.layers import add, Activation
from keras.layers.advanced_activations import LeakyReLU
#from keras.utils import plot_model # Needs pydot. #from keras.utils import plot_model # Needs pydot.
from keras.layers import Conv3D, MaxPooling3D from keras.layers import Convolution3D, MaxPooling3D
# ### used to store model prediction in order to plot roc curve # ### used to store model prediction in order to plot roc curve
@ -126,6 +127,40 @@ def model_heavy(): # créer un objet modèle
return model return model
# In[8]:
def model_new(): # créer un objet modèle
"""
Return a simple sequentiel model
Returns :
- model : keras.Model
"""
inputs = Input(shape=(14,32,32,32))
conv_1 = Convolution3D(filters=64, kernel_size=5, padding="valid", data_format='channels_first')(inputs)
activation_1 = LeakyReLU(alpha = 0.1)(conv_1)
drop_1 = Dropout(0.2)(activation_1)
conv_2 = Convolution3D(filters=64, kernel_size=3, padding="valid", data_format='channels_first')(drop_1)
activation_2 = LeakyReLU(alpha = 0.1)(conv_2)
maxpool = MaxPooling3D(pool_size=(2,2,2),
strides=None,
padding='valid',
data_format='channels_first')(activation_2)
drop_2 = Dropout(0.4)(maxpool)
flatters = Flatten()(drop_2)
dense = Dense(128)(flatters)
activation_3 = LeakyReLU(alpha = 0.1)(dense)
drop_3 = Dropout(0.4)(activation_3)
output = Dense(3, activation='softmax')(drop_3)
model = Model(inputs=inputs, outputs=output)
my_opt = optimizers.Adam(learning_rate=0.000001, beta_1=0.9, beta_2=0.999, amsgrad=False)
print(model.summary)
model.compile(optimizer=my_opt, loss="categorical_crossentropy",
metrics=["accuracy"])
return model
# In[ ]: # In[ ]:
@ -191,7 +226,7 @@ Y_test = output[1000:,]
# In[ ]: # In[ ]:
my_model = model_light() my_model = model_new()
# In[ ]: # In[ ]:
@ -204,8 +239,8 @@ tf.test.is_gpu_available()
# In[ ]: # In[ ]:
history_mild_2mp = my_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32) history_mild_2mp = mild_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)
my_model.save('light_model_2mp_e30_b32.h5') my_model.save('new_model_e30_b32_t1000.h5')
# In[ ]: # In[ ]: