Вероятности теано-печати для образцов тестового набора

в учебниках DL я пытаюсь распечатать вероятность тестовых образцов в соответствии с Какова цель/смысл передачи входных данных в функцию в Theano? но я получаю следующую ошибку. Нужно ли мне добавить несколько флагов theano_flags?

Как решить проблему?

TypeError: не удается преобразовать универсальный тип (переменной) в тип TensorType (float64, матрица). Вы можете попробовать вручную преобразовать в TensorType (float64, matrix).

(количество функций моих данных = 120, классы = 2, размер пакета test_set = 1)

часть кода:

из ано импорт пп

classifier = LogisticRegression(input=x, n_in=120, n_out=2)

print " Theano builds graphs for the expressions it computes before evaluating them:that is..."
print pp(classifier.p_y_given_x)

             .........................


     # test it on the test set

                test_losses = [test_model(i)
                               for i in xrange(n_test_batches)]
                test_score = numpy.mean(test_losses)


                values=theano.shared(value=test_set_x.get_value)
                f=theano.function([],classifier.p_y_given_x, 
                                  givens={x:values},on_unused_input='ignore')
                print f()  

person 007    schedule 06.12.2013    source источник


Ответы (1)


В вашем коде есть ошибка при создании значений. test_set_x.get_value — это функция Python. Таким образом, это должно быть test_set_x.get_value(), поскольку вы хотите получить значение, а не вызываемый объект, который его возвращает. Поскольку theano.shared() получает в качестве входных данных вызываемый объект, он создает общую переменную Theano, которая не является тензором. Поэтому, когда вы пытаетесь заменить x, которая является тензорной переменной, на общую переменную, это вызывает ошибку, поскольку это недопустимая замена.

Но еще лучше, вам не нужно создавать новую общую переменную, просто скомпилируйте функцию следующим образом:

            f=theano.function([],classifier.p_y_given_x, 
                              givens={x:test_set_x},on_unused_input='ignore')
person nouiz    schedule 09.12.2013
comment
Спасибо!! Я пробовал в LogisticRegression и logistic_sgd, и это, наконец, сработало! Однако мне интересно, применяя этот метод к DBN или SdA, сначала я указываю dbn или sda в качестве классификатора, а затем вызываю p_y_given_x из логистического класса и определяю как функцию? так как класс DBN/SdA имеет дело только с ошибками теста...? - person 007; 10.12.2013
comment
*** когда я пытаюсь распечатать вероятности test_set в DBN.py следующим образом: добавляя (только перед оператором печати в конце test_DBN()) classifier=dbn.logLayer(input=dbn.x,n_in= 120,n_out=2) f=theano.function([],classifier.p_y_given_x, gives={dbn.x:test_set_x}, on_unused_input='ignore') print f() ===== Это дает мне классификатор ошибок = dbn.logLayer (input = dbn.x, n_in = 120, n_out = 2) TypeError: объект «LogisticRegression» не может быть вызван. Нужно ли мне _def_p_y_given_x в logistic_sgd? - person 007; 11.12.2013