Python TypeError:应为numpy.ndarray或cuda.ndarray

Python TypeError:应为numpy.ndarray或cuda.ndarray,python,numpy,machine-learning,chainer,Python,Numpy,Machine Learning,Chainer,我想在chainer中训练卷积3D模型。在我的训练计划中,我有这个错误 TypeError: numpy.ndarray or cuda.ndarray are expected. 我认为错误的原因是输入是一个列表。 所以,我把输入数组改为numpy数组,但我有同样的错误 这是列车代码 model=conv_3d() 型号.至gpu(0) 优化器=优化器。动量(lr=0.01,动量=0.9) optimizer.setup(模型) 最大历元=100 批量大小=50 epoch_idx=0 当e

我想在chainer中训练卷积3D模型。在我的训练计划中,我有这个错误

TypeError: numpy.ndarray or cuda.ndarray are expected.
我认为错误的原因是输入是一个列表。 所以,我把输入数组改为numpy数组,但我有同样的错误

这是列车代码

model=conv_3d()
型号.至gpu(0)
优化器=优化器。动量(lr=0.01,动量=0.9)
optimizer.setup(模型)
最大历元=100
批量大小=50
epoch_idx=0
当epoch\u idx
这是加载器函数

def加载器(路径列表):
输入\u movie=[i[0]用于路径\u列表中的i]
target_movie=[i[1]用于路径_列表中的i]
input_movie=np.asarray([[np.asarray(cv2.resize(cv2.imread(../image/“+img),(1024//10780//10)))用于img_路径中的img]用于input_路径])
target\u movie=np.asarray([[np.asarray(cv2.resize(cv2.imread(../image/“+img),(1024//10780//10)))用于img\u path中的img]用于target\u movie中的img\u path])
返回元组([input\u movie,target\u movie])
这是一个模型

class conv_3d(链):
定义初始化(自):
超级(conv_3d,self)。\uu初始化
使用self.init_scope():
self.conv1=L.Convolution3D(无,输出通道=3,ksize=3,步长=1,pad=1)
定义调用(self,x):
返回F.relu(自转换1)

我希望列车工作,但我有上述错误。

F.relu(self.conv1)
应固定为
F.relu(self.conv1(x))
。您可能还需要将输入发送到GPU。

我认为您需要的是chainer.dataset.concat\u示例

此函数用于将
List[Tuple[array]]
type转换为
Tuple[array]
type

import numpy as np
from chainer.dataset import concat_examples

path_list = [['/usr/1/in', '/usr/1/out'], ['/usr/2/in', '/usr/2/out'], ['/usr/3/in', '/usr/3/out']]

input_batch, output_batch = concat_examples([(cv2.imread(path[0]), cv2.imread(path[1])) for path in path_list], device='cuda:0')

print(type(input_batch)) // <class 'cupy.ndarray'>
print(type(output_batch)) // <class 'cupy.ndarray'>
将numpy导入为np
从chainer.dataset导入concat_示例
路径列表=['/usr/1/in'、'/usr/1/out']、['/usr/2/in'、'/usr/2/out']、['/usr/3/in'、'/usr/3/out']
输入\u批,输出\u批=concat\u示例([(cv2.imread(路径[0]),cv2.imread(路径[1]),用于路径列表中的路径,device='cuda:0'))
打印(类型(输入批次))//
打印(类型(输出批次))//

谢谢!如何将输入发送到GPU?您可以使用
chainer.backends.cuda.to\u GPU
或简单地
cupy.asarray