Theano 函数可以在 python 中接受不同形状的输入数组
Theano function that can take input arrays of different shapes in python
在 theano 中,我想创建一个可以接受多个不同输入的函数,例如矩阵和向量。
通常我会这样做:
import theano
import numpy
x = theano.tensor.matrix(dtype=theano.config.floatX)
y = 3*x
f = theano.function([x],y)
但是,当我输入向量而不是矩阵时,例如:
f(numpy.array([1,2,3]))
然后我得到尺寸不匹配的错误:'Wrong number of dimensions: expected 2, got 1 with shape (3,).'
有什么方法可以在 theano 中定义一个更通用的输入符号,它既可以接受矩阵,也可以接受不同形状的数组,例如向量或 3 维数组,并且仍然有效?
谢谢。
维数必须在编译Theano函数时固定。编译过程的一部分是 select 取决于维数的操作变体。
您始终可以为高维张量编译函数,只需堆叠您的输入,使它们具有所需的形状。
所以
x = theano.tensor.tensor3()
y = 3*x
f = theano.function([x],y)
将接受其中
f(numpy.array([[[1,2]]])) # (1,1,3) vector wrapped as a tensor3
f(numpy.array([[[1,2],[3,4]]])) # (1,2,2) matrix wrapped as a tensor3
f(numpy.array([[[1,2],[3,4]],[[5,6],[7,8]]])) # (2,2,2) tensor3
在 theano 中,我想创建一个可以接受多个不同输入的函数,例如矩阵和向量。
通常我会这样做:
import theano
import numpy
x = theano.tensor.matrix(dtype=theano.config.floatX)
y = 3*x
f = theano.function([x],y)
但是,当我输入向量而不是矩阵时,例如:
f(numpy.array([1,2,3]))
然后我得到尺寸不匹配的错误:'Wrong number of dimensions: expected 2, got 1 with shape (3,).'
有什么方法可以在 theano 中定义一个更通用的输入符号,它既可以接受矩阵,也可以接受不同形状的数组,例如向量或 3 维数组,并且仍然有效?
谢谢。
维数必须在编译Theano函数时固定。编译过程的一部分是 select 取决于维数的操作变体。
您始终可以为高维张量编译函数,只需堆叠您的输入,使它们具有所需的形状。
所以
x = theano.tensor.tensor3()
y = 3*x
f = theano.function([x],y)
将接受其中
f(numpy.array([[[1,2]]])) # (1,1,3) vector wrapped as a tensor3
f(numpy.array([[[1,2],[3,4]]])) # (1,2,2) matrix wrapped as a tensor3
f(numpy.array([[[1,2],[3,4]],[[5,6],[7,8]]])) # (2,2,2) tensor3