示例#1
0
    def test_unweighted(self):
        mape_obj = metrics.MeanAbsolutePercentageError()
        y_true = K.constant(((0, 1, 0, 1, 0), (0, 0, 1, 1, 1),
                            (1, 1, 1, 1, 0), (0, 0, 0, 0, 1)))
        y_pred = K.constant(((0, 0, 1, 1, 0), (1, 1, 1, 1, 1),
                            (0, 1, 0, 1, 0), (1, 1, 1, 1, 1)))

        result = mape_obj(y_true, y_pred)
        assert np.allclose(35e7, K.eval(result), atol=1e-5)
示例#2
0
 def test_weighted(self):
     mape_obj = metrics.MeanAbsolutePercentageError()
     y_true = K.constant(((0, 1, 0, 1, 0), (0, 0, 1, 1, 1),
                         (1, 1, 1, 1, 0), (0, 0, 0, 0, 1)))
     y_pred = K.constant(((0, 0, 1, 1, 0), (1, 1, 1, 1, 1),
                         (0, 1, 0, 1, 0), (1, 1, 1, 1, 1)))
     sample_weight = K.constant((1., 1.5, 2., 2.5))
     result = mape_obj(y_true, y_pred, sample_weight=sample_weight)
     assert np.allclose(40e7, K.eval(result), atol=1e-5)
示例#3
0
    def test_config(self):
        mape_obj = metrics.MeanAbsolutePercentageError(
            name='my_mape', dtype='int32')
        assert mape_obj.name == 'my_mape'
        assert mape_obj.dtype == 'int32'

        # Check save and restore config
        mape_obj2 = metrics.MeanAbsolutePercentageError.from_config(
            mape_obj.get_config())
        assert mape_obj2.name == 'my_mape'
        assert mape_obj2.dtype == 'int32'
示例#4
0
def models(labelarr, imgarr):
    pretrainmodel = load_model(
        '/home/som/lab/seed-yzj/newpaper4/laboratory/model/labotary_nose_att.hdf5',
        compile=False)
    pretrainmodel.compile(optimizer=Adam(lr=1e-4),
                          loss=losses.mean_squared_error,
                          metrics=[
                              metrics.MeanAbsoluteError(),
                              metrics.MeanAbsolutePercentageError(),
                              metrics.RootMeanSquaredError(), pearson_r
                          ])

    x_train, x_test, y_train, y_test = train_test_split(imgarr,
                                                        labelarr,
                                                        test_size=0.4,
                                                        random_state=3)
    testlen = x_test.shape[0]
    x_val = x_test[:int(testlen / 2)]
    y_val = y_test[:int(testlen / 2)]
    x_test = x_test[int(testlen / 2):]
    y_test = y_test[int(testlen / 2):]
    # input
    input = Input(shape=(x_train.shape[1], x_train.shape[2], x_train.shape[3]))

    x = ZeroPadding2D((3, 3))(input)
    x = Conv2d_BN(x,
                  nb_filter=64,
                  kernel_size=(7, 7),
                  strides=(2, 2),
                  padding='valid')
    x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), padding='same')(x)
    # (56,56,64)
    x = Conv_Block(x, nb_filter=64, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=64, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=64, kernel_size=(3, 3))
    # (28,28,128)
    x = Conv_Block(x,
                   nb_filter=128,
                   kernel_size=(3, 3),
                   strides=(2, 2),
                   with_conv_shortcut=True)
    x = Conv_Block(x, nb_filter=128, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=128, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=128, kernel_size=(3, 3))
    # (14,14,256)
    x = Conv_Block(x,
                   nb_filter=256,
                   kernel_size=(3, 3),
                   strides=(2, 2),
                   with_conv_shortcut=True)
    x = Conv_Block(x, nb_filter=256, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=256, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=256, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=256, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=256, kernel_size=(3, 3))
    # (7,7,512)
    x = Conv_Block(x,
                   nb_filter=512,
                   kernel_size=(3, 3),
                   strides=(2, 2),
                   with_conv_shortcut=True)
    x = Conv_Block(x, nb_filter=512, kernel_size=(3, 3))
    x = Conv_Block(x, nb_filter=512, kernel_size=(3, 3))
    x = AveragePooling2D(pool_size=(3, 3))(x)
    x = Flatten()(x)

    fc6 = Dense(units=labelarr.shape[1],
                weights=pretrainmodel.get_layer('dense_27').get_weights(),
                trainable=False)(x)

    model = Model(input=input, output=fc6)
    model.summary()

    # model = multi_gpu_model(model, gpus=4)

    model.compile(optimizer=Adam(lr=1e-4),
                  loss=losses.mean_squared_error,
                  metrics=[
                      metrics.MeanAbsoluteError(),
                      metrics.MeanAbsolutePercentageError(),
                      metrics.RootMeanSquaredError(), pearson_r
                  ])

    model_checkpoint = ModelCheckpoint(
        '/home/som/lab/seed-yzj/newpaper4/laboratory/model/labotary_left_att.hdf5',
        monitor='val_loss',
        verbose=1,
        save_best_only=True,
        save_weights_only=False)
    reduce_lr = ReduceLROnPlateau(monitor='val_loss',
                                  patience=15,
                                  mode='auto',
                                  factor=0.7,
                                  min_lr=1e-6)

    # csv_logger = CSVLogger('training.csv')

    model.fit(x_train,
              y_train,
              batch_size=32,
              epochs=200,
              verbose=1,
              callbacks=[model_checkpoint, reduce_lr],
              validation_data=(x_val, y_val))

    return 0
示例#5
0
    def __init__(self):
        self.nosearr = np.load(self.nosearrpath)
        self.nosefrearr = np.load(self.nosefrearrpath)
        self.nosemodel = load_model(self.nosemodelpath, compile=False)
        self.nosemodel.compile(optimizer=Adam(lr=1e-4),
                               loss=losses.mean_squared_error,
                               metrics=[
                                   metrics.MeanAbsoluteError(),
                                   metrics.MeanAbsolutePercentageError(),
                                   metrics.RootMeanSquaredError(), pearson_r
                               ])
        # self.nosemodel.summary()

        self.foreheadarr = np.load(self.foreheadarrpath)
        self.foreheadfrearr = np.load(self.foreheadfrearrpath)
        self.foreheadmodel = load_model(self.foreheadmodelpath, compile=False)
        self.foreheadmodel.compile(optimizer=Adam(lr=1e-4),
                                   loss=losses.mean_squared_error,
                                   metrics=[
                                       metrics.MeanAbsoluteError(),
                                       metrics.MeanAbsolutePercentageError(),
                                       metrics.RootMeanSquaredError(),
                                       pearson_r
                                   ])
        # self.foreheadmodel.summary()

        self.leftarr = np.load(self.leftarrpath)
        self.leftfrearr = np.load(self.leftfrearrpath)
        self.leftmodel = load_model(self.leftmodelpath, compile=False)
        self.leftmodel.compile(optimizer=Adam(lr=1e-4),
                               loss=losses.mean_squared_error,
                               metrics=[
                                   metrics.MeanAbsoluteError(),
                                   metrics.MeanAbsolutePercentageError(),
                                   metrics.RootMeanSquaredError(), pearson_r
                               ])

        self.rightarr = np.load(self.rightarrpath)
        self.rightfrearr = np.load(self.rightfrearrpath)
        self.rightmodel = load_model(self.rightmodelpath, compile=False)
        self.rightmodel.compile(optimizer=Adam(lr=1e-4),
                                loss=losses.mean_squared_error,
                                metrics=[
                                    metrics.MeanAbsoluteError(),
                                    metrics.MeanAbsolutePercentageError(),
                                    metrics.RootMeanSquaredError(), pearson_r
                                ])

        self.thermalnosearr = np.load(self.thermalnosearrpath)
        self.thermalnosefrearr = np.load(self.thermalnosefrearrpath)
        self.thermalnosemodel = load_model(self.thermalnosemodelpath,
                                           compile=False)
        self.thermalnosemodel.compile(
            optimizer=Adam(lr=1e-4),
            loss=losses.mean_squared_error,
            metrics=[
                metrics.MeanAbsoluteError(),
                metrics.MeanAbsolutePercentageError(),
                metrics.RootMeanSquaredError(), pearson_r
            ])

        self.thermalforeheadarr = np.load(self.thermalforeheadarrpath)
        self.thermalforeheadfrearr = np.load(self.thermalforeheadfrearrpath)
        self.thermalforeheadmodel = load_model(self.thermalforeheadmodelpath,
                                               compile=False)
        self.thermalforeheadmodel.compile(
            optimizer=Adam(lr=1e-4),
            loss=losses.mean_squared_error,
            metrics=[
                metrics.MeanAbsoluteError(),
                metrics.MeanAbsolutePercentageError(),
                metrics.RootMeanSquaredError(), pearson_r
            ])

        self.thermalleftarr = np.load(self.thermalleftarrpath)
        self.thermalleftfrearr = np.load(self.thermalleftfrearrpath)
        self.thermalleftmodel = load_model(self.thermalleftmodelpath,
                                           compile=False)
        self.thermalleftmodel.compile(
            optimizer=Adam(lr=1e-4),
            loss=losses.mean_squared_error,
            metrics=[
                metrics.MeanAbsoluteError(),
                metrics.MeanAbsolutePercentageError(),
                metrics.RootMeanSquaredError(), pearson_r
            ])

        self.thermalrightarr = np.load(self.thermalrightarrpath)
        self.thermalrightfrearr = np.load(self.thermalrightfrearrpath)
        self.thermalrightmodel = load_model(self.thermalrightmodelpath,
                                            compile=False)
        self.thermalrightmodel.compile(
            optimizer=Adam(lr=1e-4),
            loss=losses.mean_squared_error,
            metrics=[
                metrics.MeanAbsoluteError(),
                metrics.MeanAbsolutePercentageError(),
                metrics.RootMeanSquaredError(), pearson_r
            ])