我知道 Matlab 具有创建和训练自动编码器的功能TrainAutoencoder(input, settings)
。结果能够运行">编码"和">解码"两个功能。 但这仅适用于普通自动编码器的情况。如果您想拥有一个降噪自动编码器怎么办?我搜索并找到了一些示例代码,他们使用"网络"功能将自动编码器转换为普通网络,然后像降噪自动编码器一样Train(network, noisyInput, smoothOutput)
。
但是有多个缺失部分:
- 如何使用这个新的网络对象来"编码"新的数据点? 它不支持 encode((。
- 如何从这个"网络"中获取特征的"潜在"变量?
如果有人可以帮助我解决这个问题,我将不胜感激。 谢谢 -萌萌
- 目前(2019a(,MATALAB不允许用户在自动编码器中手动添加图层。如果你想建立自己的,你将使用MATLAB提供的层从头开始;
- 为了使用TrainNetwork(...(来训练你的模型,你需要找到一种方法,将你的数据插入到一个名为imDatastore的对象中。自动编码器数据的困难在于没有标签,这是imDatastore所要求的,因此您必须找到一种聪明的方法来避免它 - 本质上您要处理所谓的OCC(一类分类(问题。
https://www.mathworks.com/help/matlab/ref/matlab.io.datastore.imagedatastore.html
- 使用激活(...(转储中间(隐藏(层的输出
https://www.mathworks.com/help/deeplearning/ref/activations.html?searchHighlight=activations&s_tid=doc_srchtitle
- 我在使用 MATLAB 和
- Python (Keras( 进行深度学习之间徘徊了几个星期,最终我选择了后者,尽管我是 MATLAB 的长期忠实用户和 Python 的新手。我的两分钱是,前者在深度学习方面有太多的限制。
祝你好运。
如果你的"模拟"意味着预测/推理,只需使用激活(...(来转储任何中间(隐藏(层的输出,如我之前提到的,以便你可以检查它们。
另一种方法是构建一个相同的网络,但仅使用编码部分,将训练好的参数复制到其中,并馈送模拟信号。