【发布时间】:2018-12-28 17:10:27
【问题描述】:
我正在使用自定义损失函数:
def ratio_loss(y, y0):
return (K.mean(K.abs(y - y0) / y))
并获得负预测值 - 在我的情况下,这不会构成场景(我使用 CNN 和回归作为最后一层来获取对象的长度)。 我使用除法是为了在真实值相对于预测值相对较小的情况下惩罚更多)。
如何防止负面预测?
这是模式(目前..):
def create_model():
model = Sequential()
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu', padding='same', input_shape=(128, 128, 1)))
model.add(Dropout(0.5))
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu', padding='same'))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu', padding='same'))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
#
#
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu', padding='same'))
model.add(Dropout(0.25))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.15))
model.add(Dense(1))
#model.compile(loss=keras.losses.mean_squared_error, optimizer=keras.optimizers.Adadelta(), metrics=[sacc])
model.compile(loss=ratio_loss, optimizer=keras.optimizers.Adadelta(), metrics=[sacc])
return model
谢谢, 阿米尔
【问题讨论】:
标签: python tensorflow machine-learning keras computer-vision