我是theano的新手,我正在尝试在我的本地计算机上重现this代码的结果。当我运行代码时,我运行theano函数(在[48])f_train
和f_test
时会出现以下错误。
TypeError:('更新必须与原始共享变量具有相同的类型(shared_var = b_y,shared_var.type = TensorType(float32,vector),update_val = Elemwise {sub,no_inplace} .0,update_val.type = TensorType(float64,vector))。','如果差异与广播模式有关,则可以调用tensor.unbroadcast(var,axis_to_unbroadcast [,...])函数来删除可广播的维度。')
当我换行时:
b_y = numpy.zeros(shape=(10,), dtype="float32")
到
b_y = numpy.zeros(shape=(10,), dtype=theano.config.floatX)
然后运行正常。现在我的.theanorc
我floatX = float32
。我无法理解为什么会这样。
此外,如果我将所有dtype=theano.config.floatX
更改为dtype="float32"
,那么我也会收到同样的错误。
请帮助我了解这里发生了什么。
答案 0 :(得分:0)
看起来你的环境有些搞砸了。没有进入你的环境细节,我无法给你一个更好的解决方案;但每当我遇到这样的问题时,我总是会去寻找代码环境的命令行标志。您可以在命令行上运行代码时为Theano设置标志,如下所示:
THEANO_FLAGS='floatX=float32,device=gpu0' python <myscript>.py
更多信息:http://deeplearning.net/software/theano/library/config.html
希望有所帮助。