Экспорт выходов из нейронной сети - PullRequest
0 голосов
/ 14 января 2019

Я построил нейронную сеть в Tensorflow и хотел бы экспортировать вывод в текстовый файл. Нейронная сеть для каждого примера имеет две вероятности выхода. Я хотел бы экспортировать эти две строки данных в текстовый файл, но у меня возникли проблемы с этим, потому что при его запуске мне нужно поместить его в какой-либо тип объекта, а затем не удается экспортировать любой из этих объектов: например:

m = []

for (x, y) in test_dataset:
  logits = tf.nn.softmax(model(x))
  result_temp = np.asarray(logits)
  formatInt_temp = result_temp.astype(np.float)
  m.append(formatInt_temp)

txt_file = open('testing.txt', 'w')

txt_file.write(m)

Приведенный выше код берет ndarrays и помещает их в список, первоначально я пытался добавить их к другому ndarray, но когда я сделал это, он выдал ошибку

AttributeError: 'numpy.ndarray' object has no attribute 'append'

Список был единственной вещью, которую я мог найти, в которую я мог экспортировать ndarrays. Однако, как только у меня есть это в списке, я не могу экспортировать это, потому что это должно быть экспортировано как строка, используя вышеупомянутый метод. Затем, если я попытаюсь поместить это в цикл и экспортировать по одной строке за раз, он скажет, что не может экспортировать подобные ndarrays. Так кто-нибудь знает лучший способ экспортировать результаты моей модели в текстовый файл?

Спасибо

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Спасибо, Александр Липтак, за то, что показал мне, как преобразовать список в ndarray с помощью np.asarray () и экспортировать массив с помощью np.savetxt (). Но мне также нужно было изменить его, так как он был трехмерным, потому что исходные строки были разбиты на партии по 32. Итак, последний код, который я использовал, был:

m = []

for (x, y) in test_dataset:
  logits = tf.nn.softmax(model(x))
  result_temp = np.asarray(logits, dtype=float)
  m.append(result_temp)

m = np.asarray(m)
m = np.reshape(m, (47168, 2))
np.savetxt("test.txt", m, delimiter=",")
0 голосов
/ 14 января 2019

Полезной функцией может быть numpy.savetxt (см. документация ):

Это может быть реализовано в вашем коде следующим образом:

for (x, y) in test_dataset:
    logits = tf.nn.softmax(model(x))
    result_temp = np.asarray(logits, dtype=float) #use this instead of astype
    np.savetxt('dataset_'+str(x)+'_'+str(y)+'.txt', results_temp)

Вы также можете использовать необязательный параметр delimeter, если хотите, чтобы значения были разделены запятой вместо разделения по умолчанию.

Если создание большого количества маленьких файлов бесполезно, и вы предпочитаете иметь один большой текстовый файл, вы можете вместо этого объединить в свой список числовые массивы, как вы делали это в коде, а затем выполнить:

np.savetxt("data.txt", np.asarray(m))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...