пробит регрессия в керасе - PullRequest
       7

пробит регрессия в керасе

0 голосов
/ 09 октября 2018

Я играл с функциями активации для бинарной модели классификации в кератах.Например, я реализовал модель logit с Dense(1, activation='sigmoid') и внедрил модель cloglog следующим образом:

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), доступные в scipy?

Ответы [ 2 ]

0 голосов
/ 15 августа 2019

Я имею дело с другой проблемой, связанной с аппроксимацией нормального CDF / обратного нормального CDF.Последнее также называется квантильной функцией, пробит-функцией или функцией процентной точки, которую можно найти в scipy.Так что это может быть то, что вам нужно несколько месяцев назад.:)

from scipy.stats import norm
norm.ppf(x,0,1) 
0 голосов
/ 09 октября 2018

Если вы используете TensorFlow в качестве бэкэнда Keras, вы можете использовать tf.distributions для вычисления CDF нормального распределения:

from tensorflow.distributions import Normal

def probit(x):
    normal = Normal(loc=0.,
                    scale=1.)
    return normal.cdf(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...