| x = self.conv_1(inputs) | x = self.conv_1(inputs) | ||||
| x = self.bn_1(x) | x = self.bn_1(x) | ||||
| x = tf.nn.relu(x) | |||||
| x = x + tf.sin(x)**2 #tf.nn.relu(x) | |||||
| x = self.conv_2(x) | x = self.conv_2(x) | ||||
| x = self.bn_2(x) | x = self.bn_2(x) | ||||
| # if not perform down sample, then add a shortcut directly | # if not perform down sample, then add a shortcut directly | ||||
| x = self.merge([x, res]) | x = self.merge([x, res]) | ||||
| out = tf.nn.relu(x) | |||||
| out = x + tf.sin(x)**2 #tf.nn.relu(x) | |||||
| return out | return out | ||||
| def call(self, inputs): | def call(self, inputs): | ||||
| out = self.conv_1(inputs) | out = self.conv_1(inputs) | ||||
| out = self.init_bn(out) | out = self.init_bn(out) | ||||
| out = tf.nn.relu(out) | |||||
| out = x + tf.sin(x)**2 #tf.nn.relu(out) | |||||
| out = self.pool_2(out) | out = self.pool_2(out) | ||||
| for res_block in [self.res_1_1, self.res_1_2, self.res_2_1, self.res_2_2, self.res_3_1, self.res_3_2, self.res_4_1, self.res_4_2]: | for res_block in [self.res_1_1, self.res_1_2, self.res_2_1, self.res_2_2, self.res_3_1, self.res_3_2, self.res_4_1, self.res_4_2]: | ||||
| out = res_block(out) | out = res_block(out) |
| model = ResNet18(10) | model = ResNet18(10) | ||||
| model.build(input_shape = (None,32,32,3)) | model.build(input_shape = (None,32,32,3)) | ||||
| filter_size_conv1 = (5,5) | |||||
| ''' | ''' | ||||
| filter_size_conv1 = (5,5) | |||||
| ## Définition de l'architecture du modèle | ## Définition de l'architecture du modèle | ||||
| model = tf.keras.models.Sequential() | model = tf.keras.models.Sequential() | ||||
| # Expliquez à quoi correspondent les valeurs numériques qui définissent les couches du réseau | # Expliquez à quoi correspondent les valeurs numériques qui définissent les couches du réseau |