【问题标题】:Exporting Outputs from a Neural Network从神经网络导出输出
【发布时间】:2019-01-14 04:05:48
【问题描述】:

我在 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'

列表是我能找到的唯一可以将 ndarray 导出到的东西。但是,一旦我将它放在列表中,我就无法导出它,因为它必须使用上述方法导出为字符串。如果我然后尝试将它放入一个循环并一次导出一行,它说它不能像那样导出 ndarrays。那么有人知道将模型结果导出到文本文件中的更好方法吗?

谢谢

【问题讨论】:

    标签: python-3.x numpy tensorflow


    【解决方案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))
    

    【讨论】:

    • 谢谢 Alexander 我确实想要它作为一个文件,并稍微修改了您的结果以导出它。我忘记添加的一件事是它是三维的,因为数据的原始行被分成 32 个批次,因此还必须重塑数组。因为它不会导出一个三维数组。
    【解决方案2】:

    感谢 Alexander Liptak 向我展示了如何使用 np.asarray() 将列表转换为 ndarray 并使用 np.savetxt() 导出数组。但我还需要重新塑造它,因为它是 3D 的,因为原来的行被分成 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=",")
    

    【讨论】:

      猜你喜欢
      • 2015-02-23
      • 2017-11-21
      • 2012-01-16
      • 2020-03-15
      • 2021-09-22
      • 2014-07-05
      • 2014-03-26
      相关资源
      最近更新 更多