ValueError: недопустимый литерал для int () с основанием 10: «image_path»: image_preloader пакета «tflearn» - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь классифицировать изображения кошек и собак, используя следующую ссылку .

В ANACONDA NAVIGATOR я столкнулся с проблемой при установке пакета " tflearn "под окружающей среды часть.Там нет никакого tflearn пакета.После некоторых проблем через ANACONDA PROMPT, tflearn успешно установлен в папку Anaconda3 .Но затем, запустив следующий код:

1-я ячейка:

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 ячеек я не получаю никакой ошибки:

2ndячейка (только для импорта требуемой папки изображений и создания набора данных в формате .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

3-я ячейка:

#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)

4-я ячейка:

#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'

Теперь мои вопросы:

Есть ли какие-либо аппаратные / программные проблемы? Или проблема в коде? Если ошибка основана на коде, то как Vikramnk успешно запустит эти коды (запись из github)?

Некоторые условия:

Все TXT-файлы (как набор данных) успешно созданы. Моя машина:Ноутбук HP 245 g5 с 4 ГБ оперативной памяти

Надеюсь, я объяснил свою проблему как можно лучше.Я полагаю, что хотя бы один человек сконцентрируется на моей проблеме из «STACKOVERFLOW», потому что рядом со мной Stackoverflow - это только один источник, где я могу решить свою проблему кодирования в течение короткого времени.Спасибо за ваше терпение!!

1 Ответ

0 голосов
/ 16 апреля 2019

Проблема возникает, когда преобразование 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".

...