Exemplo n.º 1
0
    def build_3dcnn_model(self, fusion_type, Fusion):
        if len(Fusion[0]) == 1:
            input_shape = (32, 32, len(Fusion))
            model_in, model = self.cnn_2D(input_shape)
        else:
            input_shape = (32, 32, 5, len(Fusion))
            model_in, model = self.cnn_3D(input_shape)
        model = Dropout(0.5)(model)
        model = Dense(32, activation='relu', name='fc2')(model)
        model = Dense(self.config.classes, activation='softmax',
                      name='fc3')(model)
        model = Model(input=model_in, output=model)
        # 统计参数
        # model.summary()
        plot_model(model,
                   to_file='experiments/img/' + str(Fusion) + fusion_type +
                   r'_model.png',
                   show_shapes=True)
        print '    Saving model  Architecture'

        adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
        # model.compile(optimizer=adam, loss=self.mycrossentropy, metrics=['accuracy']) #有改善,但不稳定
        model.compile(optimizer=adam,
                      loss='categorical_crossentropy',
                      metrics=['accuracy'])

        return model
Exemplo n.º 2
0
jaw = Dropout(rate=0.2)(jaw)
jaw = Flatten()(jaw)

jaw = Dense(32, activation='relu')(jaw)
jaw = Dense(32, activation='relu')(jaw)
jaw = Dense(7, activation='softmax')(jaw)
jaw = Model(inputs, jaw)'''
import csv
import keras
if mode == "train":
    es_callback = keras.callbacks.EarlyStopping(monitor='val_loss', patience=3)
    #we need only one ytrain and ytest so we must to organise our dataset
    jaw.compile(loss='categorical_crossentropy',
                optimizer=keras.optimizers.Adam(lr=0.00001,
                                                beta_1=0.9,
                                                beta_2=0.999,
                                                epsilon=None,
                                                decay=1e-6,
                                                amsgrad=False),
                metrics=['acc'])
    history = jaw.fit(xtrain7,
                      ytrain7,
                      callbacks=[es_callback],
                      validation_data=(xtest7, ytest7),
                      epochs=200,
                      batch_size=16)

    #on plot les resultats pour vérifier les performances du réseau
    acc = history.history['acc']
    val_acc = history.history['val_acc']
    loss = history.history['loss']
    val_loss = history.history['val_loss']
Exemplo n.º 3
0
)'''
print('---------------------{}'.format(xtest5.shape))
print('---------------------{}'.format(xtest7.shape))

#we need only one ytrain and ytest so we must to organise our dataset
model.compile(loss='categorical_crossentropy',
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=['acc'])
history1 = model.fit(
    [xtrain1, xtrain2, xtrain3, xtrain4, xtrain5, xtrain6, xtrain7],
    ytrain,
    validation_data=([xtest1, xtest2, xtest3, xtest4, xtest5, xtest6,
                      xtest7], ytest),
    epochs=2000,
    batch_size=2)
'''mouth.compile(loss='categorical_crossentropy',
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=['acc'])
history1 = mouth.fit_generator(datagen.flow(xtrain5, ytrain5, batch_size=2), epochs=25,
                              validation_data=(xtest5, ytest5), steps_per_epoch=xtrain5.shape[0]//2)

jaw.compile(loss='categorical_crossentropy',
              optimizer=optimizers.RMSprop(lr=1e-4),
              metrics=['acc'])
history2 = jaw.fit_generator(datagen.flow(xtrain7, ytrain7, batch_size=2), epochs=25,
                              validation_data=(xtest7, ytest7), steps_per_epoch=xtrain7.shape[0]//2)

'''
'''###########################################Model Final
result = jaw*0.6 + mouth*0.4
model_final_dense_1 = Dense(7, activation='softmax')