【问题标题】:PyTorch save prediction as CSV for each epochPyTorch 将每个时期的预测保存为 CSV
【发布时间】:2020-10-11 17:00:09
【问题描述】:

我正在尝试将我从 PyTorch 中的模型获得的预测保存为 csv。以下代码。但是,代码似乎覆盖了每个时期的预测,最终的 .csv 文件仅包含 3 个值。请知道我做错了什么:

output = model(images)
preds = output.sum(dim=[1,2,3])
np.savetxt('preds.csv', preds.detach())

【问题讨论】:

    标签: python numpy pytorch


    【解决方案1】:

    假设您的输出是浮点数,您可以将其映射到 str 并将 join 作为逗号分隔的字符串应用,最后将行附加到 csv。

    import pandas as pd
    import numpy as np
    import torch
    
    output = torch.rand(5,5,5,5)
    preds = output.sum(dim=[1,2,3])
    
    print(preds)
    
    with open('preds.csv','a') as fd:
        fd.write( ','.join(map(str, preds.detach().tolist())) + '\n')
    

    【讨论】:

    • 谢谢!这会将值全部打印在一列中。我可以将每个时代打印成单独的列吗?谢谢
    • @user5576922 更新了更通用的解决方案。
    • 非常感谢您的帮助。我唯一不确定的是如何为每一行添加标题,如果可能的话,在每一步输出到列而不是行时格式化输出?非常感谢您的帮助
    • 每行的标题,你的意思是索引吗?您可以通过在写入 CSV 之前添加数字计数器来添加索引列。当前的解决方案将逗号分隔的值添加为一行,您的 preds 是多维的吗?
    • 谢谢!代码遍历定义的批量大小的步骤是的,它是多维的。我会将 csv 文件的格式设置为步骤 1 作为第一列的标题,依此类推。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 2017-08-25
    • 1970-01-01
    • 2018-04-04
    • 2021-08-16
    • 2020-11-07
    • 2019-06-21
    • 2022-01-11
    相关资源
    最近更新 更多