ОШИБКА (theano.gof.opt): Ошибка оптимизации из-за: constant_folding - PullRequest
3 голосов
/ 06 марта 2019

В Нейронные сети и глубокое обучение есть объект, который называется network3 (это PY-файл, написанный для python 2.7 и theano 0.7).Я изменил его для запуска с Python 3.6 и Theano 1.0.3.Тем не менее, когда я запускаю следующий код:

import network3
from network3 import Network
from network3 import ConvPoolLayer , FullyConnectedLayer , SoftmaxLayer

training_data , validation_data , test_data = network3.load_data_shared()

mini_batch_size = 10

net = Network([FullyConnectedLayer(n_in=784, n_out=100),
               SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)

net.SGD(training_data , 60, mini_batch_size , 0.1, validation_data , test_data)

Возвращается много ошибок с похожим шаблоном:

ОШИБКА (theano.gof.opt): Оптимизацияошибка из-за: constant_folding

ОШИБКА (theano.gof.opt): узел: MakeVector {dtype = 'int64'} (TensorConstant {10}, TensorConstant {100})

AttributeError: module'numpy.core.multiarray' не имеет атрибута '_get_ndarray_c_version'

Тогда последний абзац в выводе был:

AttributeError: ('При компиляции произошла следующая ошибкаузел ', Elemwise{Composite{(i0 * (i1 + i2))}}(TensorConstant{10}, TensorConstant{1}, <TensorType(int64, scalar)>),' \ n ', "модуль' numpy.core.multiarray 'не имеет атрибута' _get_ndarray_c_version '")

Я думаю, что строка 1379 вызвала ошибку:

   1298                                  libraries=self.libraries(),
   1299                                  header_dirs=self.header_dirs(),
-> 1300                                  c_compiler=self.c_compiler(),
   1301                                  )
   1302 

~\AppData\Local\Continuum\Anaconda3\lib\site-packages\theano\gof\cc.py in cmodule_key_(self, fgraph, no_recycling, compile_args, libraries, header_dirs, insert_config_hash, c_compiler)
   1377         # DynamicModule always add the include <numpy/arrayobject.h>
   1378         sig.append('NPY_ABI_VERSION=0x%X' %
-> 1379                    np.core.multiarray._get_ndarray_c_version())
   1380         if c_compiler:
   1381             sig.append('c_compiler_str=' + c_compiler.version_str())

AttributeError: ('The following error happened while compiling the node', Elemwise{Composite{(i0 * (i1 + i2))}}(TensorConstant{10}, TensorConstant{1}, <TensorType(int64, scalar)>), '\n', "module 'numpy.core.multiarray' has no attribute '_get_ndarray_c_version'")

Я погуглил проблемы, но не смог найти подходящего решения.Не могли бы вы помочь?

Заранее спасибо.

1 Ответ

1 голос
/ 08 марта 2019

Какая у тебя клёвая версия?Откройте терминал Python и выполните следующие строки from numpy import __version__, а затем print(__version__).В простой версии (1.14.2), которую я использую, эта функция четко определена.

Иногда обновление пакета может обесценить функцию или даже удалить функцию, но также предложить новую функцию для замены более старой.Я не знаю, так ли это, но всегда помните об этой возможности.

...