keras中输出层的十进制精度

时间:2017-07-03 17:09:41

标签: python-3.x tensorflow neural-network keras

我正在开发一个项目,根据与其相关的各种输入功能预测药物协同作用值。协同值是浮点数,因此我想为我的神经网络设置精度范围。 例如 - 假设实际值是1.342423而我的模型预测1.30123那么输出应该被视为正确的输出。 换句话说,我想限制检查的小数位数,以比较实际答案和预测答案。 神经网络:

model = Sequential()
act = 'relu'
model.add(Dense(430, input_shape=(3,)))
model.add(Activation(act))

model.add(Dense(256))
model.add(Activation(act))
model.add(Dropout(0.42))

model.add(Dense(148))
model.add(Activation(act))
model.add(Dropout(0.3))

model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])

学习和训练/测试数据的完整源代码: https://github.com/tanmay-edgelord/Drug-Synergy-Models/blob/master 请询问所需的任何其他详细信息 (使用带有TensorFlow后端的Keras)

1 个答案:

答案 0 :(得分:2)

创建custom metric

import keras.backend as K

def myAccuracy(y_true, y_pred):
    diff = K.abs(y_true-y_pred) #absolute difference between correct and predicted values
    correct = K.less(diff,0.05) #tensor with 0 for false values and 1 for true values
    return K.mean(correct) #sum all 1's and divide by the total. 

然后在模型编译中使用它:

model.compile(metrics=[myAccuracy],....)