如何让C#和Python在机器学习任务中进行通信的最佳方法?

我正在为大学项目开发一个简单的游戏,使用Unity。这个游戏利用了机器学习技术,因此我需要使用TensorFlow来构建一个神经网络(NN),以便根据NN的预测在游戏中执行某些操作。

特别是,我的学习方法是强化学习。我需要监控环境中的状态奖励(这些在C#中编码),并将它们传递给神经网络(在Python中编码)。然后,预测(来自Python代码)应该被发送回环境(到C#代码中)。

遗憾的是,我对如何让C#和Python进行通信感到相当困惑。我在网上阅读了很多内容,但都没有真正帮助到我。有人能帮我理清思路吗?谢谢。


回答:

你有几种选择:

子进程

你可以通过Unity的C#启动Python脚本,然后通过进程的stdout和stdin发送和接收数据。在Python端,这就像使用input()print()一样简单,而在C#端,主要是通过Stream对象进行读写(据我所知)。

UDP/TCP套接字

你可以让Python成为一个UDP/TCP服务器(如果你需要传输大量数据,建议使用UDP,因为它可能更简单)。然后你创建一个C#客户端,向Python服务器发送请求。Python服务器将进行处理(AI魔法,耶!),然后将结果返回给Unity的C#。在C#中,你需要研究UdpClient类,而在Python中,需要使用socket模块。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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