- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试为我的 Caffe 机器学习项目创建一个 LMDB 数据库。但是 LMDB 在第一次尝试插入数据点时抛出错误,说环境映射大小已满。
这是尝试填充数据库的代码:
import numpy as np
from PIL import Image
import os
import lmdb
import random
# my data structure for holding image/label pairs
from serialization import DataPoint
class LoadImages(object):
def __init__(self, image_data_path):
self.image_data_path = image_data_path
self.dirlist = os.listdir(image_data_path)
# find the number of images that are to be read from disk
# in this case there are 370 images.
num = len(self.dirlist)
# shuffle the list of image files so that they are read in a random order
random.shuffle(self.dirlist)
map_size = num*10
j=0
# load images from disk
for image_filename in os.listdir(image_data_path):
# check that every image belongs to either category _D_ or _P_
assert (image_filename[:3] == '_D_' or image_filename[:3] == '_P_'), "ERROR: unknown category"
# set up the LMDB datbase object
env = lmdb.open('image_lmdb', map_size=map_size)
with env.begin(write=True) as txn:
# iterate over (shuffled) list of image files
for image_filename in self.dirlist:
print "Loading " + str(j) + "th image from disk - percentage complete: " + str((float(j)/num) * 100) + " %"
# open the image
with open(str(image_data_path + "/" + image_filename), 'rb') as f:
image = Image.open(f)
npimage = np.asarray(image, dtype=np.float64)
# discard alpha channel, if necessary
if npimage.shape[2] == 4:
npimage = npimage[:,:,:3]
print image_filename + " had its alpha channel removed."
# get category
if image_filename[:3] == '_D_':
category = 0
elif image_filename[:3] == '_P_':
category = 1
# wrap image data and label into a serializable data structure
datapoint = DataPoint(npimage, category)
serialized_datapoint = datapoint.serialize()
# a database key
str_id = '{:08}'.format(j)
# put the data point in the LMDB
txn.put(str_id.encode('ascii'), serialized_datapoint)
j+=1
我还做了一个小数据结构来保存图片和标签并序列化它们,上面用到了:
import numpy as np
class DataPoint(object):
def __init__(self, image=None, label=None, dtype=np.float64):
self.image = image
if self.image is not None:
self.image = self.image.astype(dtype)
self.label = label
def serialize(self):
image_string = self.image.tobytes()
label_string = chr(self.label)
datum_string = label_string + image_string
return datum_string
def deserialize(self, string):
image_string = string[1:]
label_string = string[:1]
image = np.fromstring(image_string, dtype=np.float64)
label = ord(label_string)
return DataPoint(image, label)
这是错误:
/usr/bin/python2.7 /home/hal9000/PycharmProjects/Caffe_Experiments_0.6/gather_images.py
Loading 0th image from disk - percentage complete: 0.0 %
Traceback (most recent call last):
File "/home/hal9000/PycharmProjects/Caffe_Experiments_0.6/gather_images.py", line 69, in <module>
g = LoadImages(path)
File "/home/hal9000/PycharmProjects/Caffe_Experiments_0.6/gather_images.py", line 62, in __init__
txn.put(str_id.encode('ascii'), serialized_datapoint)
lmdb.MapFullError: mdb_put: MDB_MAP_FULL: Environment mapsize limit reached
最佳答案
map 大小是整个数据库的最大大小,包括元数据 - 看起来您使用了预期的记录数。
你增加这个数字
关于python - 我是否错误地使用了 LMDB?它说在 0 次插入后达到环境映射大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642885/
我正在编写一个 JS 程序,我有一个条件可以根据输入进行一些算术运算。如果我遇到操作类型为“add”,我需要将两个值相加;如果我得到“times”作为我的运算符值,我需要相乘。 我尝试使用基本的 if
我正在编写一个仅作为查看器的应用程序 - 无需创建、无需编辑、无需保存。 显然,那么,不会有自动保存,但是还有什么其他东西可以从 autosavesInPlace 返回 YES 改变世界,从而对观看者
Azure 开始出现以下错误: Unsupported token. Unable to initialize the authorization context. 每当我尝试更改我的应用程序时,我都
当我编写 out.println() 时,Eclipse 提示 out 无法解析。 我导入了 java.io.* 和其他 servlet 包。 最佳答案 只是在黑暗中拍摄,我认为这就是您正在寻找的出路
Azure 开始出现以下错误: Unsupported token. Unable to initialize the authorization context. 每当我尝试更改我的应用程序时,我都
是否可以执行类似的操作来检查 radio 表单是否未选中: if !($(this).find("input:checked")) {} 正确的语法是什么? 最佳答案 试试这个: $(this).fi
我正在尝试从表中选择行,其中 date 列值等于澳大利亚悉尼的当前日期 (UTC+10h)。服务器位于悉尼,因此我想使用 SYSDATETIME()。这是我的查询: SELECT * FROM dat
我听说 JavaScript 实际上并不像其他语言那样“指向”内存中的值(或对象,因为在 JS 中一切都是对象)。相反,JS 变量引用内存中的其他值/对象。这是真的?指向和引用之间的语义区别是什么?
我的计算机科学类(class)有一项作业,其中要求读取包含多个测试分数的文件,并要求我对它们进行求和并求平均值。虽然求和和求平均值很容易,但我在读取文件时遇到问题。老师说用这个语法 Scanner s
Java 的 XML 解析器似乎认为我的 XML 文档在根元素之后的格式不正确。但我已经用几种工具验证了它,但他们都不同意。这可能是我的代码错误,而不是文档本身的错误。如果你们能给我提供任何帮助,我将
根据这份文件: http://www.stroustrup.com/terminology.pdf l 值具有同一性且不可移动。 公关值是可移动的,但没有身份。 x 值具有同一性并且是可移动的。 关于
这个问题在这里已经有了答案: What does "atomic" mean in programming? (7 个答案) 关闭 5 年前。 我正在阅读 MongoDB 的 documentati
在 PHP 和 MySQL 中有没有一种方法能够比较 2 个不同的数组(列表)变量并说出有多少项是相同的 例如, $array1 = "hello, bye, google, laptop, yes"
本文来自 Effective Java Programs that use the int enum pattern are brittle. Because int enums are compil
C++ 中有一些特性是类型安全的,而另一些则不是。 C++ 类型安全示例: char c = 'a'; int *p = &c; // this is not allowed (compiler
我有一个 CS 课的作业,它说要读取一个包含多个测试分数的文件,并要求我对它们求和并取平均值。虽然求和和平均很容易,但我在读取文件时遇到了问题。老师说要用这个语法 Scanner scores = n
嗯.. 有时,PyDev 会说“ Unresolved 导入错误”。 在我的环境中 Python2.6.6 Eclipse3.7 PyDev2.2.2 错误是。 > Unresolved import
我正在向服务器发送请求,服务器正在处理请求并做出响应。但是在我的应用程序中,我收到了: Error Domain=NSURLErrorDomain Code=-1017 "cannot parse r
在我最近的一次讨论中,有人告诉我这样说是不正确的,因为 Ajax 已经是 Javascript。 上下文: “我如何在网页中 blablababal,这样它就不必刷新页面” 我的回答: “使用 Jav
下午好。 我一直在尝试使用 ffmpeg 将 .mpeg 拆分为一系列 .jpeg 图像。请注意,这是指定 here 的逆问题,但我面临的问题与该线程的作者面临的问题不同。 具体来说,我已经在我的 f
我是一名优秀的程序员,十分优秀!