Ehs*_*adi 6 python numpy neural-network theano
我正在使用numpy 1.9和最新版本的Theano编写此代码,但是我收到了一个我无法解决的错误.我怀疑它可能是我声明变量类型的方式,但我无法解决它.我感谢你的建议.我想用矢量生成矩阵,并用偏差求和.
import theano.tensor as T
from theano import function
import numpy as np
import pprint
def test_theano_matrix():
pp = pprint.PrettyPrinter(indent=3)
W= T.fmatrix()
x=T.fvector()
b= T.fvector()
y = T.dot(W,x) + b
lin_func = function([W,x,b],y)
dt = np.dtype(np.float)
w_inp = np.matrix('1 0;0 1',dtype=dt)
x_inp = np.matrix('2;1',dtype=dt)
b_inp = np.matrix('0;0',dtype=dt)
lin_func(w_inp,x_inp,b_inp)
if __name__ == '__main__':
test_theano_matrix()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
raise TypeError(err_msg, data)
TypeError: ('Bad input argument to theano function at index 0(0-based)',
'TensorType(float32, matrix) cannot store a value of dtype float64 without risking loss of precision. If you do not mind this loss, you can: 1) explicitly cast your data to float32, or 2) set "allow_input_downcast=True" when calling "function".', matrix([[ 1., 0.],[ 0., 1.]]))
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间!
我有一个类似的错误,并能够通过添加.theanorc包含以下两行的文件来解决它:
[global]
floatX = float32
Run Code Online (Sandbox Code Playgroud)
这似乎解决了一切.但是,您的问题显示略有不同的错误.但我认为这值得尝试.
这个答案来自Theano-users google group。
您将x变量定义为:
x=T.vector(dtype=theano.config.floatX)
Run Code Online (Sandbox Code Playgroud)
这是一个向量(即它只有 1 维)。
x_inp = np.matrix('2;1',dtype=dt)
Run Code Online (Sandbox Code Playgroud)
创建一个矩阵,而不是一个向量。
Theano 图是强类型的,您必须定义良好的维度数。只需使用:
x_inp = np.asarray([2,1])
Run Code Online (Sandbox Code Playgroud)
实际上我最终将x和定义b为矩阵。
| 归档时间: |
|
| 查看次数: |
8644 次 |
| 最近记录: |