在 Chaquopy 中转换数组和张量

2024-05-08

我该怎么做呢?

我看到你的帖子说你可以将 java 对象传递给 Python 方法,但这不适用于 numpy 数组和 TensorFlow 张量。以下以及其各种变体是我尝试过的,但没有成功。

double[][] anchors = new double[][]{{0.57273, 0.677385}, {1.87446, 2.06253}, {3.33843, 5.47434}, {7.88282, 3.52778}, {9.77052, 9.16828}};
PyObject anchors_ = numpy.callAttr("array", anchors);

我也尝试使用连接来创建它,但它不起作用。这是因为连接(和堆栈等)需要一个包含names作为参数传递的数组的数量,而 Java 中的 Chaquopy 似乎没有办法做到这一点。

有什么建议吗?


我假设您收到的错误是“ValueError:仅接受 2 个非关键字参数”。

您可能还会在调用中收到来自 Android Studio 的警告numpy.array,说“令人困惑的参数'锚点',不清楚是否需要可变参数或非可变参数调用”。这就是问题的根源。您打算通过一项double[][]参数,但不幸的是 Java 将其解释为 5double[]论据。

Android Studio 应该为您提供自动修复将参数转换为Object, i.e.:

numpy.callAttr("array", (Object)anchors);

这告诉 Java 编译器您打算只传递一个参数,并且numpy.array然后就可以正常工作了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Chaquopy 中转换数组和张量 的相关文章

随机推荐