Как я могу описать кусочно-линейную функцию в 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]
, но я не знаю, как сделать запаздывающую разницу (доступ к элементу за элементом).
Любая помощь приветствуется!