【问题标题】:How to split a CNN model into two and merge them? [closed]如何将 CNN 模型一分为二并合并? [关闭]
【发布时间】:2021-06-09 05:31:47
【问题描述】:

我想从一个 CNN 模型创建两个独立的 CNN 模型。让我将其命名为 CNN-A 和 CNN-B。

即原始 CNN 模型 = CNN-A 模型 + CNN-B 模型

在预测期间,原始输入数据集被馈送到 CNN-A。 CNN-A 的输出作为 CNN-B 的输入。原始模型的原始输出是CNN-B模型的输出。

为了实现上述架构,如果有的话,我想听听您的建议和想法吗?

【问题讨论】:

  • 我认为Original CNN model = CNN-A model + CNN-B model 的表示令人困惑,因为 CNN-A 和 CNN-B 具有不同的输入/输出对。据我了解,这就是你想要的:CNN-A -> CNN-B,其中-> 表示CNN-A 的输出成为CNN-B 的输入,并且两个CNN 都有自己的输入/输出对。从训练的角度来看,这应该分为两个独立的任务。

标签: python tensorflow keras deep-learning conv-neural-network


【解决方案1】:

实现似乎是多余的。原因是每个 CNN 的输入应该是一个图像。假设第一个 CNN 网络的输出是一张图像,然后将其提供给第二个 CNN,这与堆叠多个卷积层和额外的 dropout 以及 一个 CNN 模型的类似内容相同。

所以毕竟实现一个深度 CNN 将模仿你想要的架构。

您还可以查看transfer learning,它能够利用预训练模型的层,您可以添加自己的最终层并进行调整。这也和你说的差不多。

================ 评论后=====================

您可以使用 mobilenet 之类的模型架构来将模型部署到您的移动设备上。

您还可以将迁移学习应用于现有的预训练移动网络模型,这将节省大量时间和资源。

最后,您可以使用 Flask 在服务器上部署模型(用于计算机)。然后创建一个 API,当您通过 POST 请求将相关数据发送到服务器时,该 API 将提供预测。这通常用于减少手机的负载,这是我更喜欢的方法。这种方法相对高效,易于扩展。

【讨论】:

  • 感谢 cmets 和链接;我的目的是以分布式方式为低功耗设备部署 CNN 推理。即,在训练了一个 CNN 模型之后,我将预训练的模型分成两部分,A 和 B。然后,我将 A 部署在智能手机中运行,将 B 部署在服务器 PC 中以进行预测。这种设置是为了减少智能手机的计算工作量。请问有什么建议吗?
猜你喜欢
  • 2021-09-03
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多