Привет Я следую учебнику по нейронной сети, где автор, кажется, использует общие переменные везде. По моему мнению, общая переменная в theanos просто является пространством в памяти, которое может использоваться кучей gpu и cpu. Во всяком случае, у меня есть две матрицы, которые я объявляю как общие переменные, и я хочу выполнить некоторую операцию над ними с помощью функции. (Вопрос 1) Мне бы это понравилось, если бы кто-нибудь мог объяснить, почему функция полезна против регулярной функции def. Во всяком случае, я устанавливаю мое определение, как например:Использование общей переменной в функции
import theano
import theano.tensor as T
from theano import function
import numpy as np
class Transform:
def __init__(self, dimg):
dimg = dimg.astype(theano.config.floatX)
self.in_t = theano.shared(dimg, name='dimg', borrow=True)
def rotate(self, ox, oy, radians):
value = np.zeros((2 * self.in_t.get_value().shape[0],
2 * self.in_t.get_value().shape[1]))
out_t = theano.shared(value,
name='b',
dtype=theano.config.floatX),
borrow=True)
din = theano.tensor.dmatrix('a')
dout = theano.tensor.dmatrix('b')
def atest():
y = x + y
return y
f = function(inputs=[],
givens={x: self.in_t,
y: self.out_t},
outputs=atest)
return f()
Проблема заключается в том, что я понятия не имею, как использовать общие переменные в обычной функции-вывода вызова. Я понимаю, что я могу делать обновления через функцию ([], .. update = (shared_var_1, upate_function)). Но как мне получить доступ к ним в моей обычной функции?
Я понимаю, как получить доступ к общим переменным значения. Мне интересно, как вы относитесь к нему в своей anano.функции (выходы = some_function). –
@ Dr.Knowitall Я отредактировал свой ответ, проверьте, помогает ли это – Vektor88
Разве это не приведет к возврату х обратно к процессору и не вернет его обратно в gpu? –