将网格的子部分作为CNN的输入

我有两个巨大的网格(输入和输出),它们表示同一区域的某些空间数据。我希望通过将输入网格中感兴趣像素周围的小部分输入神经网络,来逐像素生成输出。

训练和评估CNN的简单方法是分别提取各个部分,并将这些部分输入到fit()函数中。但如果CNN操作的子网格是例如输入的256×256区域,那么每个epoch我将复制每个数据点65536(!!!)次。

那么,有没有办法让karas直接使用更大数据结构的子部分进行训练呢?

对我来说,这听起来有点像在数据系列的连续部分上训练RNN,而不是分别复制每个部分。

性能考虑主要是在评估模型的情况下。我想使用这个模型生成一个巨大的地理区域(丹麦)的输出网格,分辨率为12.5厘米


回答:

在我看来,你似乎在寻找一个全卷积网络(FCN)。

通过仅使用随输入大小缩放的层(特别是摒弃密集层的使用),FCN能够生成一个输出,其空间范围与输入成比例增长——通常,输出与输入具有相同的分辨率,就像你的情况一样。

如果你的输入非常大,你仍然可以用子图像训练FCN。然后在推理时,你可以

  • 在整个图像上运行网络:确实,有时输入在训练期间太大而无法批处理,但可以在推理时单独输入。
  • 或者将输入分割成子图像,并将结果拼接回来。在这种情况下,我可能会使用重叠的瓦片,以避免潜在的边界效应。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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