кусочно-линейная функция в Теано - PullRequest
0 голосов
/ 28 августа 2018

Как я могу описать кусочно-линейную функцию в theano? В частности, я хочу передать theano два вектора n точек [x_i] и [y_i] и контрольную точку xx, для которой я хочу получить значение yy, которое является линейно-линейным интерполированным выходом.

Выполнение этого в numpy может выглядеть примерно так:

import matplotlib.pyplot as plt
import numpy as np

k = 3                              ## number of components
x = np.array([0.0, 0.5, 0.9, 1.2]) ## x coords
y = np.array([0.0, 0.1, 1.2, 1.1]) ## y coords
m = np.zeros(n)
b = np.zeros(n)

for i in range(k):
    m[i] = (y[i+1] - y[i]) / (x[i+1] - x[i])
    b[i] = -m[i] * x[i] + y[i]

xx = np.linspace(0.01,1.19,100)
inds = np.digitize(xx, x_bps)
yy = m[inds-1]*xx + b[inds-1]
plt.plot(xx,yy)
plt.show()

Причина, по которой я хочу сделать это в theano, а не numpy, заключается в том, что я пишу эту функцию как часть проекта, который требует theano.

Я создал theano.tensor векторов [x_i] и [y_i], но я не знаю, как сделать запаздывающую разницу (доступ к элементу за элементом).

Любая помощь приветствуется!

...