【问题标题】:Why can't I evaluate the reshaped tensorvariable in theano?为什么我不能评估 theano 中重塑的张量变量?
【发布时间】:2016-07-18 15:48:18
【问题描述】:

为什么我不能通过我下面写的代码来评估重构后的张量变量?

from theano import shared
from theano import tensor as T
import numpy

x = T.matrix('x') # the input data

# input = (nImages, nChannel(nFeatureMaps), nDim1, nDim2, nDim3)

layer1_input = T.reshape(x, xTrain.shape, ndim=5)
layer1_input.eval({x:xTrain})

由于我已经对张量变量 x 进行了整形,并将一个相同维度的 numpy 数组传递给它,所以它只是报告,

TypeError:('带有名称的theano函数的输入参数错误 ":17" 在索引 0(从 0 开始)', '错误 维度数:预期为 2,得到 5 个形状(2592、1、51、61, 23).')

【问题讨论】:

    标签: python numpy theano deep-learning


    【解决方案1】:

    我认为问题在于您使用matrix(二维)作为x 的数据类型,它接收五维输入xTrain。正如here 所说,对于五维输入,您应该创建自定义数据类型。

    示例代码:

    from theano import tensor as T
    import numpy as np
    xTrain = np.random.rand(1,1,2,3,3).astype('float32')
    
    dtensor5 = T.TensorType('float32', (False,)*5)
    x = dtensor5('x')
    
    layer1_input = x
    print layer1_input.eval({x:xTrain})
    

    关于

    因为我已经重塑了张量变量 x,并传递了一个 numpy 数组 与它相同的维度

    我认为实际发生的情况是变量 x 首先接收输入(引发错误),然后为 layer1_input 重塑它

    【讨论】:

    • 我是这样想的,我的程序似乎卡在了 eval() 部分。如果我们总是可以声明一个自定义的张量类型,为什么我们仍然可以像教程所说的那样将它们重塑到更高的维度(至少看起来是这样)。
    • 我已经更新了我的答案。什么样的“卡住”? reshape 可以像在您的代码中一样使用,layer1_input 将是五维(无需先声明),而 x 是二维张量变量
    猜你喜欢
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多