Я хочу определить функцию theano.scan, которая принимает в качестве входных данных список векторов разного размера. Каков наилучший способ сделать это?
Если я сделаю глупую реализацию, как в примере ниже, я получу ошибку об индексации времени:
import theano
import theano.tensor as T
import numpy as np
def step(time): # compute the average time step of a time grid
dt=time[1:] - time[:-1]
return T.mean(dt)
time_list=T.vector('time_list')
results, updates=theano.scan(fn=step, sequences=[time_list])
f=theano.function(inputs=[time_list], outputs=[results], updates=updates)
time_grid_1 = np.array([0, 100, 1100, 2100, 5100])
time_grid_2 = np.array([0, 200, 1200, 2200])
time_grid_3 = np.array([0, 300, 1300, 2300, 3300, 4300])
time_grids = [time_grid_1 , time_grid_2 , time_grid_3 ]
Я понимаю, почему я получаю ошибку: это потому, что time_list объявлен как простой 1D вектор. Следовательно, его элементы являются скалярами, поэтому нет смысла пытаться вычислить dt = время [1:] - время [: - 1].
Итак, я хотел бы определить time_list как theano список векторов, который я не смог найти в документации.