Browse Source

added new model, with different hyperparameter from dd3d git

Nicolasticot 5 years ago
parent
commit
bb9a7f549e
2 changed files with 82 additions and 9 deletions
  1. 42 4
      DeepDrug.ipynb
  2. 40 5
      DeepDrug.py

+ 42 - 4
DeepDrug.ipynb View File

16
   },
16
   },
17
   {
17
   {
18
    "cell_type": "code",
18
    "cell_type": "code",
19
-   "execution_count": null,
19
+   "execution_count": 6,
20
    "metadata": {},
20
    "metadata": {},
21
    "outputs": [],
21
    "outputs": [],
22
    "source": [
22
    "source": [
28
     "from keras.layers import Dense, Flatten, TimeDistributed, Dropout\n",
28
     "from keras.layers import Dense, Flatten, TimeDistributed, Dropout\n",
29
     "from keras import Input, Model\n",
29
     "from keras import Input, Model\n",
30
     "from keras.layers import add, Activation\n",
30
     "from keras.layers import add, Activation\n",
31
+    "from keras.layers.advanced_activations import LeakyReLU\n",
31
     "#from keras.utils import plot_model  # Needs pydot.\n",
32
     "#from keras.utils import plot_model  # Needs pydot.\n",
32
-    "from keras.layers import Conv3D, MaxPooling3D"
33
+    "from keras.layers import Convolution3D, MaxPooling3D"
33
    ]
34
    ]
34
   },
35
   },
35
   {
36
   {
162
     "    return model"
163
     "    return model"
163
    ]
164
    ]
164
   },
165
   },
166
+  {
167
+   "cell_type": "code",
168
+   "execution_count": 8,
169
+   "metadata": {},
170
+   "outputs": [],
171
+   "source": [
172
+    "def model_new(): # créer un objet modèle\n",
173
+    "    \"\"\"\n",
174
+    "    Return a simple sequentiel model\n",
175
+    "    \n",
176
+    "    Returns :\n",
177
+    "        - model : keras.Model\n",
178
+    "    \"\"\"\n",
179
+    "    inputs = Input(shape=(14,32,32,32))\n",
180
+    "    conv_1 = Convolution3D(filters=64, kernel_size=5, padding=\"valid\", data_format='channels_first')(inputs)\n",
181
+    "    activation_1 = LeakyReLU(alpha = 0.1)(conv_1)\n",
182
+    "    drop_1 = Dropout(0.2)(activation_1)\n",
183
+    "    conv_2 = Convolution3D(filters=64, kernel_size=3, padding=\"valid\", data_format='channels_first')(drop_1)\n",
184
+    "    activation_2 = LeakyReLU(alpha = 0.1)(conv_2)\n",
185
+    "    maxpool = MaxPooling3D(pool_size=(2,2,2),\n",
186
+    "                            strides=None,\n",
187
+    "                            padding='valid',\n",
188
+    "                            data_format='channels_first')(activation_2)\n",
189
+    "    drop_2 = Dropout(0.4)(maxpool)\n",
190
+    "    flatters = Flatten()(drop_2)\n",
191
+    "    dense = Dense(128)(flatters)\n",
192
+    "    activation_3 = LeakyReLU(alpha = 0.1)(dense)\n",
193
+    "    drop_3 = Dropout(0.4)(activation_3)\n",
194
+    "    output = Dense(3, activation='softmax')(drop_3)\n",
195
+    "    model = Model(inputs=inputs, outputs=output)\n",
196
+    "    my_opt = optimizers.Adam(learning_rate=0.000001, beta_1=0.9, beta_2=0.999, amsgrad=False)\n",
197
+    "    print(model.summary)\n",
198
+    "    model.compile(optimizer=my_opt, loss=\"categorical_crossentropy\",\n",
199
+    "                  metrics=[\"accuracy\"])\n",
200
+    "    return model"
201
+   ]
202
+  },
165
   {
203
   {
166
    "cell_type": "code",
204
    "cell_type": "code",
167
    "execution_count": null,
205
    "execution_count": null,
250
    "metadata": {},
288
    "metadata": {},
251
    "outputs": [],
289
    "outputs": [],
252
    "source": [
290
    "source": [
253
-    "my_model = model_light()"
291
+    "my_model = model_new()"
254
    ]
292
    ]
255
   },
293
   },
256
   {
294
   {
270
    "outputs": [],
308
    "outputs": [],
271
    "source": [
309
    "source": [
272
     "history_mild_2mp = mild_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)\n",
310
     "history_mild_2mp = mild_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)\n",
273
-    "my_model.save('light_model_2mp_e30_b32.h5')"
311
+    "my_model.save('new_model_e30_b32_t1000.h5')"
274
    ]
312
    ]
275
   },
313
   },
276
   {
314
   {

+ 40 - 5
DeepDrug.py View File

5
 
5
 
6
 # ## Importing library
6
 # ## Importing library
7
 
7
 
8
-# In[ ]:
8
+# In[6]:
9
 
9
 
10
 
10
 
11
 import numpy as np
11
 import numpy as np
16
 from keras.layers import Dense, Flatten, TimeDistributed, Dropout
16
 from keras.layers import Dense, Flatten, TimeDistributed, Dropout
17
 from keras import Input, Model
17
 from keras import Input, Model
18
 from keras.layers import add, Activation
18
 from keras.layers import add, Activation
19
+from keras.layers.advanced_activations import LeakyReLU
19
 #from keras.utils import plot_model  # Needs pydot.
20
 #from keras.utils import plot_model  # Needs pydot.
20
-from keras.layers import Conv3D, MaxPooling3D
21
+from keras.layers import Convolution3D, MaxPooling3D
21
 
22
 
22
 
23
 
23
 # ### used to store model prediction in order to plot roc curve
24
 # ### used to store model prediction in order to plot roc curve
126
     return model
127
     return model
127
 
128
 
128
 
129
 
130
+# In[8]:
131
+
132
+
133
+def model_new(): # créer un objet modèle
134
+    """
135
+    Return a simple sequentiel model
136
+    
137
+    Returns :
138
+        - model : keras.Model
139
+    """
140
+    inputs = Input(shape=(14,32,32,32))
141
+    conv_1 = Convolution3D(filters=64, kernel_size=5, padding="valid", data_format='channels_first')(inputs)
142
+    activation_1 = LeakyReLU(alpha = 0.1)(conv_1)
143
+    drop_1 = Dropout(0.2)(activation_1)
144
+    conv_2 = Convolution3D(filters=64, kernel_size=3, padding="valid", data_format='channels_first')(drop_1)
145
+    activation_2 = LeakyReLU(alpha = 0.1)(conv_2)
146
+    maxpool = MaxPooling3D(pool_size=(2,2,2),
147
+                            strides=None,
148
+                            padding='valid',
149
+                            data_format='channels_first')(activation_2)
150
+    drop_2 = Dropout(0.4)(maxpool)
151
+    flatters = Flatten()(drop_2)
152
+    dense = Dense(128)(flatters)
153
+    activation_3 = LeakyReLU(alpha = 0.1)(dense)
154
+    drop_3 = Dropout(0.4)(activation_3)
155
+    output = Dense(3, activation='softmax')(drop_3)
156
+    model = Model(inputs=inputs, outputs=output)
157
+    my_opt = optimizers.Adam(learning_rate=0.000001, beta_1=0.9, beta_2=0.999, amsgrad=False)
158
+    print(model.summary)
159
+    model.compile(optimizer=my_opt, loss="categorical_crossentropy",
160
+                  metrics=["accuracy"])
161
+    return model
162
+
163
+
129
 # In[ ]:
164
 # In[ ]:
130
 
165
 
131
 
166
 
191
 # In[ ]:
226
 # In[ ]:
192
 
227
 
193
 
228
 
194
-my_model = model_light()
229
+my_model = model_new()
195
 
230
 
196
 
231
 
197
 # In[ ]:
232
 # In[ ]:
204
 # In[ ]:
239
 # In[ ]:
205
 
240
 
206
 
241
 
207
-history_mild_2mp = my_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)
208
-my_model.save('light_model_2mp_e30_b32.h5')
242
+history_mild_2mp = mild_model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=30, batch_size=32)
243
+my_model.save('new_model_e30_b32_t1000.h5')
209
 
244
 
210
 
245
 
211
 # In[ ]:
246
 # In[ ]: