Я пытался реализовать плавное приближение к функции np.floor
.Мне нужна плавная реализация, так как np.floor
не может быть распространено обратно в моей программе.
Я пришел к решению, которое включает в себя сумму многих логистических функций, однако при больших количествах производительность ужасна.
import numpy as np
from scipy.special import expit
def multiexpit(x, slope=50):
y = np.asarray([ expit(slope*(x-i)) for i in range(int(np.max(x))) ])
return np.sum(y,axis=0)
if __name__=='__main__':
import matplotlib.pyplot as plt
x = np.linspace(0,10,1000)
plt.plot(x,np.floor(x),label='floor')
plt.plot(x,multiexpit(x-1),label='smooth floor')
Результаты довольно хорошие, однако.Здесь аппроксимация показана для функции пола с параметром температуры slope=50
:
Мой вопрос: возможно ли реализовать эту функцию?со временем выполнения, которое не зависит от значения входов?Есть ли у тензорного потока нечто подобное?Я использую NumPy, но проблема та же с TF.