Учитывая данные с shape = (t,m,n)
, мне нужно найти векторную переменную формы (n,)
, которая минимизирует выпуклую функцию данных и вектора. Я использовал cvxopt (и cvxpy) для выполнения выпуклых оптимизаций с использованием 2D-ввода, но кажется, что они не поддерживают 3D-массивы. Есть ли способ реализовать эту выпуклую оптимизацию, используя эти или другие подобные пакеты?
Учитывая данные с формой (t,m,n)
и (t,m)
и переменной с формой (n,)
, вот упрощение типа функции, которое мне нужно минимизировать:
import numpy as np
obj_func(var,data1,data2):
#data1.shape = (t,m,n)
#data2.shape = (t,m)
#var.shape = (n,)
score = np.sum(data1*var,axis=2) #dot product along axis 2
time_series = np.sum(score*data2,axis=1) #weighted sum along axis 1
return np.sum(time_series)-np.sum(time_series**2) #some function
Похоже, это должна быть простая выпуклая оптимизация, но, к сожалению, эти функции не поддерживаются в N-мерных массивах в cvxopt / cvxpy. Есть ли способ реализовать это?