从神经网络导出输出

时间:2019-01-14 04:05:48

标签: python-3.x numpy tensorflow

我在Tensorflow中建立了一个神经网络,想将输出导出到文本文件中。每个示例的神经网络都有两个输出概率。我想将这两行数据导出到文本文件中,但是这样做很麻烦,因为在运行时,我需要将其放入某种类型的对象中,然后无法导出任何这些对象:例如:< / p>

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 :(得分:1)

有用的功能可能是numpy.savetxt(请参阅documentation):

这可以在您的代码中实现,如下所示:

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

如果创建许多小文件无济于事,而您宁愿拥有一个大文本文件,则可以像在代码中一样将numpy数组聚合到列表中,然后执行以下操作:

np.savetxt("data.txt", np.asarray(m))

答案 1 :(得分:1)

感谢Alexander Liptak向我展示了如何使用np.asarray()将列表转换为ndarray以及如何使用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=",")