1

我正在阅读 jpg 图像,然后将它们重塑为张量。我将图像投射为 float32:

def load(folder,table):
X=[]

train = pd.read_csv(table)

for i,img_id in enumerate(train['Image']):

    img = io.imread(folder+img_id[2:])

    X.append(img)

X = np.array(X)/255.
X = X.astype(np.float32)
X = X.reshape(-1, 1, 225, 225)
return X

但是,我收到此错误

TypeError: ('Bad input argument to theano function with name "/Users/mas/PycharmProjects/Whale/nolearn_convnet/Zahraa5/lib/python2.7/site-packages/nolearn/lasagne/base.py:435"  at index 1(0-based)', 'TensorType(int32, vector) cannot store a value of dtype float32 without risking loss of precision. If you do not mind this loss, you can: 1) explicitly cast your data to int32, or 2) set "allow_input_downcast=True" when calling "function".', array([[ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       ..., 
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],

       [ 0.,  0.,  0., ...,  0.,  0.,  0.]], dtype=float32))
4

2 回答 2

1

这是theano-users 邮件列表的交叉帖子

道格在那里提供了一个答案:

您使用的 theano 变量定义为整数,但您传入了一个浮点数,因此错误“TensorType(int32, vector) cannot store a value of dtype float32...”。您可以修改数据加载代码以将其转换为 int32,或者将符号变量更改为支持 float32 的变量。

所以在某处你有一条看起来像这样的线:

x = T.ivector()

或者

x = T.vector(dtype='int32')

看起来您需要将其更改为类似

x = T.tensor4()

其中dtype已更改为相等theano.config.floatX,并且维数已更改为 4 以匹配 的 4 维性质X

于 2016-01-12T17:13:59.007 回答
1

如果你没有弄明白,我有一个类似的错误,这就是我修复它的方法:将你的 y 转换为 int32。x 值可以是 floatx,但在 nolearn 中 y 必须是 int32 才能进行分类。

于 2016-01-24T19:36:11.363 回答