free(): invalid 指针 中止 (核心已转储)

我在尝试运行我的Python程序,看起来它应该可以顺利运行,然而我遇到了一个之前从未见过的错误,它显示:

free(): invalid pointerAborted (core dumped)

然而,我不确定如何尝试修复这个错误,因为它没有给我提供太多关于问题本身的信息。

起初我以为这应该是网络中张量大小的问题,但它们完全正常。我在谷歌上搜索了这个问题,发现这是一个在不该分配内存的地方分配内存的问题,但我不知道如何修复这个问题。

我的代码分为两个不同的文件,我使用了两个库来使用Sinkhorn损失函数并随机采样网格。

import argparseimport point_cloud_utils as pcuimport timeimport numpy as npimport torchimport torch.nn as nnfrom fml.nn import SinkhornLossimport commondef main():    # x是形状为[n, 3]的张量,包含顶点的坐标    x = torch._C.from_numpy(common.loadpointcloud("sphere.txt"))    # t是形状为[n, 3]的张量,包含在单位立方体中均匀分布的样本集    v, f = common.unit_cube()    t = torch._C.sample_mesh_lloyd(pcu.lloyd(v,f,x.shape[0]).astype(np.float32)) # 随机采样点云(目前是立方体?)    # 模型是一个简单的全连接网络,将3D参数点映射到3D    phi = common.MLP(in_dim=3, out_dim=3)    # Eps是1/lambda,max_iters是Sinkhorn迭代的最大次数    emd_loss_fun = SinkhornLoss(eps=1e-3, max_iters=20,                                stop_thresh=1e-3, return_transport_matrix=True)    mse_loss_fun = torch.nn.MSELoss()    # 首先使用Adam优化器    optimizer = torch.optim.Adam(phi.parameters(), lr= 10e-3)    fit_start_time = time.time()    for epoch in range(100):        optimizer.zero_grad()        # 执行神经网络的前向传播,在参数点处评估函数        y = phi(t)        # 计算重建(使用francis库)与目标之间的Sinkhorn散度        # 注意:Sinkhorn函数期望一批b个点集(即形状为[b, n, 3]的张量)        # 因为我们只有一个,所以我们使用unsqueeze使x和y的维度为[1, n, 3]        with torch.no_grad():            _, P = emd_loss_fun(phi(t).unsqueeze(0), x.unsqueeze(0))        # 将传输矩阵投影到置换矩阵空间,并计算置换点之间的L-2损失        # 之间置换点之间的L-2损失        loss = mse_loss_fun(y[P.squeeze().max(0)[1], :], x)        # loss = mse_loss_fun(P.squeeze() @ y,  x)  # 直接使用传输矩阵        # 执行优化器步骤        loss.backward()        optimizer.step()        print("Epoch %d, loss = %f" % (epoch, loss.item()))    fit_end_time = time.time()    print("总时间 = %f" % (fit_end_time - fit_start_time))    # 绘制真实值、重建点和表示拟合函数phi的网格    common.visualitation(x,t,phi)if __name__ == "__main__":    main()

错误信息是:free(): invalid pointerAborted (core dumped)

这再次对我帮助不大。如果有人知道发生了什么,或者你对这个错误了解更多,我将非常感激。


回答:

编辑:实际上已知原因。推荐的解决方案是从源代码构建这两个包。


导入open3d和PyTorch时有一个已知问题。原因未知。 https://github.com/pytorch/pytorch/issues/19739

存在一些可能的解决方法:

(1) 一些人发现更改导入这两个包的顺序可以解决问题,尽管在我个人的测试中两种方式都会崩溃。

(2) 其他人发现从源代码编译这两个包有帮助。

(3) 还有其他人发现将open3d和PyTorch移到不同的脚本中调用可以解决问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注