如何在 Matlab 中创建"Denoising Autoencoder"?



我知道 Matlab 具有创建和训练自动编码器的功能TrainAutoencoder(input, settings)。结果能够运行">编码"和">解码"两个功能。 但这仅适用于普通自动编码器的情况。如果您想拥有一个降噪自动编码器怎么办?我搜索并找到了一些示例代码,他们使用"网络"功能将自动编码器转换为普通网络,然后像降噪自动编码器一样Train(network, noisyInput, smoothOutput)

但是有多个缺失部分:

  1. 如何使用这个新的网络对象来"编码"新的数据点? 它不支持 encode((。
  2. 如何从这个"网络"中获取特征的"潜在"变量?

如果有人可以帮助我解决这个问题,我将不胜感激。 谢谢 -萌萌

  1. 目前(2019a(,MATALAB不允许用户在自动编码器中手动添加图层。如果你想建立自己的,你将使用MATLAB提供的层从头开始;
  2. 为了使用TrainNetwork(...(来训练你的模型,你需要找到一种方法,将你的数据插入到一个名为imDatastore的对象中。自动编码器数据的困难在于没有标签,这是imDatastore所要求的,因此您必须找到一种聪明的方法来避免它 - 本质上您要处理所谓的OCC(一类分类(问题。

https://www.mathworks.com/help/matlab/ref/matlab.io.datastore.imagedatastore.html

  1. 使用激活(...(转储中间(隐藏(层的输出

https://www.mathworks.com/help/deeplearning/ref/activations.html?searchHighlight=activations&s_tid=doc_srchtitle

    我在使用 MATLAB 和
  1. Python (Keras( 进行深度学习之间徘徊了几个星期,最终我选择了后者,尽管我是 MATLAB 的长期忠实用户和 Python 的新手。我的两分钱是,前者在深度学习方面有太多的限制。

祝你好运。

如果你的"模拟"意味着预测/推理,只需使用激活(...(来转储任何中间(隐藏(层的输出,如我之前提到的,以便你可以检查它们。

另一种方法是构建一个相同的网络,但仅使用编码部分,将训练好的参数复制到其中,并馈送模拟信号。

相关内容

  • 没有找到相关文章

最新更新