我正在尝试使用以下link对Cats&Dogs的图像进行分类。
在ANACONDA NAVIGATOR中,我遇到了在环境部分下安装软件包“tflearn”的问题。没有任何tflearn包。通过ANACONDA PROMPT遇到一些问题后,tflearn成功安装在Anaconda3文件夹中。但是通过运行以下代码:
第一个细胞:
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
发生以下警告:
此计算机不支持curses(请安装/重新安装curses以获得最佳体验
但是在运行3个单元后,我没有遇到任何错误:
第二个单元格(仅用于导入所需的图像文件夹并将数据集创建为.txt格式):
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
第三单元格:
#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)
第四细胞:
#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()
但在运行以下第5个单元格(代码)之后:
#Importing data
X_train, Y_train = image_preloader(TRAIN_DATA, image_shape=(56,56),mode='file', categorical_labels=True,normalize=True)
我有一个错误如下:
---------------------------------------------------------------------------
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'
现在我的问题是:
有任何硬件/软件问题吗?或问题出在代码中?如果基于Code的错误,那么Vikramnk如何成功运行这些代码(来自github的记录)?
一些条件:
已成功创建所有.txt文件(作为数据集)。我的机器:配备4GB RAM的HP 245 g5笔记本电脑
希望我尽可能地解释我的问题。我相信至少有一个人会专注于我的问题来自“STACKOVERFLOW”,因为靠近我Stackoverflow只是一个来源,我可以在很短的时间内解决我的编码问题。感谢您的耐心等待!!
当无法将String转换为int时会发生此问题。在这种特殊情况下,您要转换的文件“training_data.txt”具有一些无法转换为int的符号。典型情况是空格或其他符号。我相信您的问题是文件夹名称中的“_”。如果没有,请尝试在文件中查找任何其他空格或未激活的符号。
例如:
/Users/Awal/Desktop/Rakib/CNN/cats And Dogs/train/cat.1236.jpg 0
这将触发错误,因为程序找到第一个空格并获取下一个整数并将其转换为int。在这种情况下“0”
解:
/Users/Awal/Desktop/Rakib/CNN/cats And Dogs/train/cat.1236.jpg 0
尝试将文件夹名称“Dataset_for_Cats_Dogs”更改为类似“DatastForCatsDogs”的简单字符串。