В настоящее время я реализую сверточный RBM, и я использую для этого Theano.Рисование образцов из многомерных с использованием Theano
Мое текущее выполнение кажется довольно медленным, и профилирование показало, что в основном это связано с шагами выборки Гиббса. Фактически, я использую Theano's shared randomstreams для генерации многочленных образцов.
Однако я нашел улучшенную версию случайного потока Theano here, который отвечает всем требованиям производительности, которые у меня есть.
К сожалению, этот экспериментальный случайный генератор поддерживает только двумерные матрицы, и я должен использовать его для тензора4-объекта (4D-Matrix), так как это результат работы nano conv2d от Theano.
Вы знаете, если есть эффективный способ сделать образцы из 4D-матрицы, которая имеет следующую структуру:
SampleSize х 1 х N х M
, где я хотел бы сделать из одного из столбцы (третье измерение), что дает мне такой код:
for sample in range(numSamples):
for col in range(numCols):
drawMultinomial(n=1, pvals=data[sample,0,col,:])
Но этот код будет очень медленно, и я хотел бы сделать это эффективно и на GPU.
Так что любая помощь была бы высоко оценена.