我正在开发一个项目,根据与其相关的各种输入功能预测药物协同作用值。协同值是浮点数,因此我想为我的神经网络设置精度范围。 例如 - 假设实际值是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)
答案 0 :(得分:2)
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],....)