Я использую Theano для обучения моей модели на машине с Linux. Код хорошо работает на процессоре, но имеет ошибку при переключении обратно на графический процессор на той же машине: AttributeError: 'TensorVariable' object has no attribute 'get_value'
.
Я считаю, что один из параметров, созданный из массива numpy
, не является общей переменной, но вместо этого является нормальным TensorVariable
, если я запускаю его на GPU. Но нет такой проблемы в процессоре. Я столкнулся с той же проблемой на CPU раньше, я исправил ее, приведя массив numpy к тому же типу с плавающей запятой theano.config.floatX
. Но я не знаю, как решить эту проблему.
Конфигурация
Файл конфигурации ~/.theanorc
выглядит так:
[global]
floatX = float32
device = cuda
Я использую Python3, и среда графического процессора для Theano уже настроена.
код
Функция theano.shared
не создает общую переменную массива графического процессора, а обычную тензорную переменную. Код, который я использую:
self.one_matrix = theano.shared(
np.array(one_matrix,
dtype=theano.config.floatX),
name="OneMatrix") \
.astype(theano.config.floatX)
выход
На графическом процессоре:
тип (self.one_matrix): <class 'theano.tensor.var.TensorVariable'>
тип (one_matrix): <class 'numpy.ndarray'>
one_matrix.dtype: float32
Мне интересно, как я могу создать общую переменную из массива numpy. Что мне нужно сделать, чтобы этот код работал и на GPU? Любая помощь будет оценена. Спасибо!