奇怪的是,关于stackoverflow尚无此类问题。
我正在使用MXNet,尝试在PC上运行VQA示例,并使用{
"name": "Person",
"plural": "people",
"base": "User",
"idInjection": false,
"options": {
"validateUpsert": true,
"postgresql": {
"tableName": "people"
}
},
"hidden": [
"emailVerified",
"realm",
"username",
],
"properties": {
"first-name": {
"type": "string",
"postgresql": {
"columnName": "first_name"
}
},
"last-name": {
"type": "string",
"postgresql": {
"columnName": "last_name"
}
},
"email": {
"type": "string"
},
...
},
"validations": [],
"relations": {
"customer": {
"type": "belongsTo",
"model": "Customer",
"foreignKey": "customer_id"
}
},
"acls": [],
"methods": {}
}
读取数据,但是
mx.io.DataIter
在这两个代码上
mxnet.base.MXNetError: [11:05:07] c:\projects\mxnet-distro-win\mxnet-build\src\storage\./cpu_device_storage.h:70: Failed to allocate CPU Memory
上面是我的代码,下面是库代码
那么“无法分配给CPU内存”到底是什么意思?
File "E:\PyProjects\TestVqa\VQAtrainIter.py", line 71, in reset
self.nd_img.append(mx.ndarray.array(self.img, dtype=self.dtype))
File "E:\PyProjects\Pro\venv\lib\site-packages\mxnet\ndarray\utils.py", line 146, in array
return _array(source_array, ctx=ctx, dtype=dtype)
的代码部分如下
VQAtrainIter.py
答案 0 :(得分:1)
根据您所说的,您正在使用npz,它始终完全加载到内存中。 DataIter确实是按批获取数据的,但是如果源是npz(它本身在内存中),则所有内容都必须放入内存中。 DataIter的作用是,它使您不需要两倍的内存,因为它将一小部分数据从numpy数组复制到mxnet.nd.NDArray进行处理。