作为一个有趣的项目,我一直在尝试使用TensorFlow API(不幸的是在Java中..但我相信我仍然可以得到一些结果)。我的第一个目标是开发一个2D点云过滤的模型。所以我编写了代码来生成224×172分辨率的随机云,计算邻居密度过滤的结果,并存储两者(见下图)。
因此,我已经为输入和预期输出生成了数据,可以根据需要生成大量的数据集。
我将输入和输出数组存储为224×172的二进制数组(索引处无点为0,索引处有点为1)。所以我的输入和输出都是224×172的。在这一点上,我不确定如何将我的输入转换为预期的结果。我不确定如何为我的云的每个“像素”赋权,或者如何“教”程序预期的结果。任何关于这是否在我给定的场景中可行的建议/指导将不胜感激!
请不要对我太苛刻…在机器学习方面,我完全是个新手。
回答:
想象一下,TensorFlow是一组构建模块(就像乐高积木),可以用来构建机器学习模型。模型构建完成后,可以进行训练和评估。
所以你的问题基本上可以分为三个步骤:
1. 我是机器学习的新手。请指导我如何选择适合任务的模型。
2. 我是TensorFlow的新手。我有模型的想法(见1),我想通过TensorFlow构建它。
3. 我是TensorFlow的Java API的新手。我知道如何使用TensorFlow构建模型(2),但我在Java中遇到了困难。
这听起来很吓人,但实际上并没有那么糟糕。
我建议你按照以下计划进行:
1. 你需要浏览机器学习模型,找到适合你情况的模型。所以你需要问自己:哪些模型可以用于云过滤?
而且,你真的需要某种机器学习模型吗?为什么不使用简单的数学公式?这些是你可以问自己的问题。
假设你已经找到了某个模型。例如,你找到了一篇描述能够解决你任务的神经网络的论文。然后进入下一步
2. TensorFlow有很多例子和代码片段。所以你甚至可以找到已经实现了你的模型的代码。
坏消息是,大多数代码示例和API都是基于Python的。
但如果你想进入机器学习领域,我建议你学习Python。它很容易上手。在科学界使用Python非常普遍,因为它可以避免浪费时间在包装器、配置等方面(如Java所需的)。我们可以从脚本的第一行开始解决我们的任务。
正如我最初提到TensorFlow和乐高的相似性,我想补充的是,TensorFlow有更多高级的补充。所以你不是在处理构建模块,而是在处理某种模块层。
比如tflearn。它非常好,特别是如果你没有深厚的数学或机器学习背景。它允许以非常简单和易懂的方式构建机器学习模型。所以你需要添加一些神经网络层吗?给你。这里不需要复杂的低级张量操作。
缺点是你无法从Java中加载tflearn模型。
无论如何,我们假设,在这一步的最后,你能够构建你的模型,训练它,并评估模型和预测质量。3. 所以你有了你的机器学习模型,你理解TensorFlow的机制,如果你仍然需要使用Java,那应该会容易得多。我注意到,你无法从Java中加载tflearn模型。你可以尝试使用jython直接从Java中调用Python的函数,尽管我没有尝试过。
按照这个方式(1-3),你肯定会有更多问题。所以欢迎来到SO。