Python3 - IndexError при попытке сохранить текстовый файл - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь следовать этому учебнику с моими собственными локальными файлами данных:

Учебник CNTK

У меня есть следующая функция для сохранения массива данных вTXT-файл, передаваемый в CNTK:

# Save the data files into a format compatible with CNTK text reader

def savetxt(filename, ndarray):
    dir = os.path.dirname(filename)

    if not os.path.exists(dir):
        os.makedirs(dir)

    if not os.path.isfile(filename):
        print("Saving", filename )
        with open(filename, 'w') as f:
            labels = list(map(' '.join, np.eye(11, dtype=np.uint).astype(str)))
            for row in ndarray:
                row_str = row.astype(str)
                label_str = labels[row[-1]]
                feature_str = ' '.join(row_str[:-1])
                f.write('|labels {} |features {}\n'.format(label_str, feature_str))
    else:
        print("File already exists", filename)

У меня есть 2 ndarrays следующей формы, которые я хочу кормить модель:

train.shape
(1976L, 15104L)

test.shape
(1976L, 15104L)

Затем я пытаюсь реализовать функцию следующим образом:

# Save the train and test files (prefer our default path for the data)

data_dir = os.path.join("C:/Users", 'myself', "OneDrive", "IA Project", 'data', 'train')
if not os.path.exists(data_dir):
    data_dir = os.path.join("data", "IA Project")

print ('Writing train text file...')
savetxt(os.path.join(data_dir, "Train-128x118_cntk_text.txt"), train)

print ('Writing test text file...')
savetxt(os.path.join(data_dir, "Test-128x118_cntk_text.txt"), test)

print('Done')

и тогда я получаю следующую ошибку:

Writing train text file...
Saving C:/Users\A702628\OneDrive - Atos\Microsoft Capstone IA\Capstone data\train\Train-128x118_cntk_text.txt
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-24-b53d3c69b8d2> in <module>()
      6 
      7 print ('Writing train text file...')
----> 8 savetxt(os.path.join(data_dir, "Train-128x118_cntk_text.txt"), train)
      9 
     10 print ('Writing test text file...')

<ipython-input-23-610c077db694> in savetxt(filename, ndarray)
     12             for row in ndarray:
     13                 row_str = row.astype(str)
---> 14                 label_str = labels[row[-1]]
     15                 feature_str = ' '.join(row_str[:-1])
     16                 f.write('|labels {} |features {}\n'.format(label_str, feature_str))

IndexError: list index out of range

Может кто-нибудь сказать, что не так с этой частью кода?И как я мог это исправить?Заранее большое спасибо.

1 Ответ

0 голосов
/ 16 октября 2018

Поскольку вы используете свои собственные входные данные - они помечены в диапазоне от 0 до 9?Массив меток содержит только 10 записей, поэтому это может вызвать проблему вне допустимого диапазона.

...