我在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。那么,有人知道将模型结果导出到文本文件的更好方法吗?
谢谢
答案 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=",")