我正在使用卷积神经网络(CNN)进行实验。
我想要做的是实施与CNN相关的论文。
本文中有数据集(此数据集包含每个网址/图像的图像和标签的网址),而我遇到的问题是按网址下载图片并为CNN提取像素。
我的代码如下:
pixels = np.array(data["IMAGE_URL"].apply(image_from_url).tolist())
def image_from_url(_url=None):
with urllib.request.urlopen(_url) as url:
f = BytesIO(url.read())
img = Image.open(f)
img = img.resize((224, 224), Image.ANTIALIAS)
arr = array(img,dtype="float32")
样本大小为50000,使用此代码,我收到以下错误:
ConnectionResetError:[Errno 104]通过对等方重置连接
我花了几个小时来检查错误来了。 我需要一些更有效的方法来处理它。
Numpy和pandas针对处理数据进行了优化,但我不是在处理数据而是预处理。
对这种情况有什么建议吗?
谢谢
答案 0 :(得分:0)
如果使用Keras,请使用ImageGenerator。 如果使用Pytorch,请使用torchvision。
简而言之,当您无法将所有内容都加载到内存中时,必须分批加载并使用生成器进行分批训练。
答案 1 :(得分:0)
现在,您已经将映像下载到磁盘上-如果使用的是keras,则可以使用keras的“生成器”。这将使您仅加载以下几张图像就可以有效地使用RAM,并且还可以大大加快代码的速度。
这是因为keras异步加载了下一批图像,而GPU在当前补丁上进行了训练。尝试这样的事情:
mysqli_fetch_assoc()