重用神经网络

Reusing a Neural Network

我对神经网络非常陌生,但对于我的一个项目来说它们似乎很适合。最后,应用程序应该 运行 在 Android phone 上。我的想法是使用 TenserFlow,但我不确定它是否合适。

我有以下情况,我的输入是一组图像(它们的顺序不应该对输出有任何影响)。集合大小不固定,但在大多数情况下低于 10。我对整个集合的输出只是二进制分类 (Pass/Fail)。

我将有一个卷积神经网络,它计算两个输出,一个权重和一个 pass/fail 值。每个图像都单独提供给这个 CNN,然后使用加权算术平均值将结果值聚合成最终的 pass/fail 值。

我的问题是,我可以用 TensorFlow 训练这样的网络吗?

我的训练数据中没有 CNN 输出的值,只有聚合后的输出。这通常可以使用面向梯度的框架,还是我必须为此使用遗传算法方法。

你绝对可以用 tensorflow 做到这一点。完成入门教程后,您应该查看 CNN tutorial 以了解如何在 tensorflow 中实现卷积神经网络。 所有繁重的工作都已经解决了。您所要做的就是使用 tf.nn.conv2d() 方法制作卷积层,然后使用其中一个池化和归一化操作等。 如果您不熟悉这意味着什么,您应该 read up 了解它,但简而言之,CNN 具有三个独特的组件。卷积层在图像中扫描 window 以寻找特定模式,其激活记录在输出中作为网格。降低数据的维度对于学习很重要,这就是池化层所做的;它获取卷积层的输出并减小其大小。归一化层对此进行归一化,因为归一化数据往往会改善学习。

如果您只有聚合输出,那么您需要想办法为单个图像提供合理的代理输出。你可以做的一件事就是使用聚合输出作为一组中每个单独图像的标签,并使用梯度下降来训练。