首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:带有基10的int()的无效文本:“tflearn”包的“image_path”:image_preloader

ValueError:带有基10的int()的无效文本:“tflearn”包的“image_path”:image_preloader
EN

Stack Overflow用户
提问于 2018-06-13 09:28:55
回答 1查看 1.1K关注 0票数 0

我试图使用下面的链接对猫和狗的图像进行分类。

在ANACONDA导航器中,我遇到了在Environment部件下安装软件包“tflearn”的问题。没有任何tflearn包。通过ANACONDA提示遇到一些问题后,tflearn成功安装在Anaconda3文件夹中。但是,通过运行以下代码:

第一牢房:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt 
import tensorflow as tf
import tflearn
from PIL import Image
%matplotlib inline
#for writing text files
import glob
import os     
import random 
#reading images from a text file
from tflearn.data_utils import image_preloader
import math

以下警告发生:

此机器不支持诅咒(请安装/重新安装诅咒以获得最佳体验)。

但是,在运行以下3个单元之后,我没有收到任何错误:

第二个单元格(只用于导入所需的图像文件夹&以.txt格式创建数据集):

代码语言:javascript
复制
IMAGE_FOLDER = '/Users/sarfaraz/Anaconda3/Dataset_for_Cats_Dogs/train'
TRAIN_DATA = '/Users/sarfaraz/Anaconda3/Dataset_for_Cats_Dogs/training_data.txt'
TEST_DATA = '/Users/sarfaraz/Anaconda3/Dataset_for_Cats_Dogs/test_data.txt'
VALIDATION_DATA = '/Users/sarfaraz/Anaconda3/Dataset_for_Cats_Dogs/validation_data.txt'
train_proportion=0.7
test_proportion=0.2 
validation_proportion=0.1

第三牢房:

代码语言:javascript
复制
#read the image directories
filenames_image = os.listdir(IMAGE_FOLDER)
#shuffling the data is important otherwise the model will be fed with a single class data for a long time and 
#network will not learn properly
random.shuffle(filenames_image)

第四牢房:

代码语言:javascript
复制
#total number of images
total=len(filenames_image)
##  *****training data******** 
fr = open(TRAIN_DATA, 'w')
train_files=filenames_image[0: int(train_proportion*total)]
for filename in train_files:
    if filename[0:3] == 'cat':
        fr.write(IMAGE_FOLDER + '/'+ filename + ' 0\n')
    elif filename[0:3] == 'dog':
        fr.write(IMAGE_FOLDER + '/'+ filename + ' 1\n')

fr.close()
##  *****testing data******** 
fr = open(TEST_DATA, 'w')
test_files=filenames_image[int(math.ceil(train_proportion*total)):int(math.ceil((train_proportion+test_proportion)*total))]
for filename in test_files:
    if filename[0:3] == 'cat':
        fr.write(IMAGE_FOLDER + '/'+ filename + ' 0\n')
    elif filename[0:3] == 'dog':
        fr.write(IMAGE_FOLDER + '/'+ filename + ' 1\n')
fr.close()

##  *****validation data******** 
fr = open(VALIDATION_DATA, 'w')
valid_files=filenames_image[int(math.ceil((train_proportion+test_proportion)*total)):total]
for filename in valid_files:
    if filename[0:3] == 'cat':
        fr.write(IMAGE_FOLDER + '/'+ filename + ' 0\n')
    elif filename[0:3] == 'dog':
        fr.write(IMAGE_FOLDER + '/'+ filename + ' 1\n')
fr.close()

但是在运行完第五个单元之后(代码):

代码语言:javascript
复制
#Importing data
X_train, Y_train = image_preloader(TRAIN_DATA, image_shape=(56,56),mode='file', categorical_labels=True,normalize=True)

我犯了以下错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-29-f3e21e2c3936> in <module>()
      1 #Importing data
----> 2 X_train, Y_train = image_preloader(TRAIN_DATA, image_shape=(56,56),mode='file', categorical_labels=True,normalize=True)

~\Anaconda3\lib\site-packages\tflearn-0.3.2-py3.6.egg\tflearn\data_utils.py in image_preloader(target_path, image_shape, mode, normalize, grayscale, categorical_labels, files_extension, filter_channel)
    537                             continue
    538                     images.append(l[0])
--> 539                     labels.append(int(l[1]))
    540 
    541     n_classes = np.max(labels) + 1

ValueError: invalid literal for int() with base 10: 'sarfaraz/Anaconda3/Dataset_for_Cats_Dogs/train/cat.103.jpg'

现在我的问题是:

有没有硬件/软件方面的问题?还是密码里有问题?如果基于代码的错误,那么Vikramnk如何成功地运行这些代码(从github记录)?

一些条件:

所有.txt文件(作为数据集)都已成功创建。我的机器: HP 245 g5笔记本电脑,4GB内存

希望我已经尽可能地解释了我的问题。我相信至少有一个人会关注我在"STACKOVERFLOW“中的问题,因为离我很近的Stackoverflow只是我可以在短时间内解决编码问题的一个来源。谢谢你的耐心!!

EN

回答 1

Stack Overflow用户

发布于 2019-04-16 08:04:41

当无法将字符串转换为int时,就会出现此问题。在这种情况下,您要转换的文件"training_data.txt“有一些符号不能转换为int。典型的例子是一个空间或其他一些符号。我相信您的问题是文件夹名中的"_“。如果没有,请尝试在文件中找到任何其他空格或未排除的符号。

例如:

/Users/Awal/Desktop/Rakib/CNN/cats And Dogs/train/cat.1236.jpg 0

这将触发一个arror,因为程序会找到第一个空格,并接受下一个整数并将其转换为int。在这种情况下,"0“

解决方案:

/Users/Awal/Desktop/Rakib/CNN/cats And Dogs/train/cat.1236.jpg 0

尝试将文件夹名"Dataset_for_Cats_Dogs“更改为像"DatastForCatsDogs”这样的简单字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50833740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档