我一直在研究keras中的二进制分类模型的激活函数。例如,我已经实现了Invalid key hash. The key has ************ does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/MY_APP_ID
的logit模型,并且已经实现了如下的cloglog模型:
Dense(1, activation='sigmoid')
我真的很想尝试一个probit模型,但是我很难用import numpy as np
from keras.layers import Input, Dense
from keras.models import Model
import keras.backend as K
np.random.seed(42)
# Some Data
nrows = 1000
ncols = 20
X = np.random.rand(nrows, ncols) - 0.5
CF = np.random.rand(ncols, 1)
y = np.sign(X.dot(CF))
y[np.where(y == -1)] = 0
# cloglog model
def cloglog(x):
return -(K.exp(-K.exp(x))-1)
input = Input(shape=(ncols,))
output = Dense(1, activation=cloglog)(input)
model = Model(input, output)
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(X, y, epochs=10)
中可用的操作来实现链接功能。
这有可能吗?还是我真的需要keras.backend
中可用的分布函数(pdf / cdf)?
答案 0 :(得分:2)
如果将TensorFlow用作Keras后端,则可以利用tf.distributions来计算正态分布的CDF:
from tensorflow.distributions import Normal
def probit(x):
normal = Normal(loc=0.,
scale=1.)
return normal.cdf(x)
答案 1 :(得分:0)
我要处理的另一个问题是近似正常CDF /反向CDF。后者也称为分位数函数,概率函数或百分点函数,可以在scipy中找到。因此,这可能就是几个月前您需要的。 :)
from scipy.stats import norm
norm.ppf(x,0,1)