autoencodersを調べる必要があります。効果的に、データを低レベルのニューラルネットワークに渡し、PCAのような分析を適用し、その後、それを使用してより多くのデータを生成することができます。
Matlabにはautoencoderクラスとfunctionクラスがあり、これはすべてこれを行います。 MATLABヘルプファイルから
訓練データを生成します。
rng(0,'twister'); % For reproducibility
n = 1000;
r = linspace(-10,10,n)';
x = 1 + r*5e-2 + sin(r)./r + 0.2*randn(n,1);
列車のトレーニングデータを使用してオートエンコーダ。
hiddenSize = 25;
autoenc = trainAutoencoder(x',hiddenSize,...
'EncoderTransferFunction','satlin',...
'DecoderTransferFunction','purelin',...
'L2WeightRegularization',0.01,...
'SparsityRegularization',4,...
'SparsityProportion',0.10);
テストデータを生成します。
n = 1000;
r = sort(-10 + 20*rand(n,1));
xtest = 1 + r*5e-2 + sin(r)./r + 0.4*randn(n,1);
は訓練されたオートエンコーダ、autoencを使用してテストデータを予測します。
xReconstructed = predict(autoenc,xtest');
プロット実際の試験データと予測。
figure;
plot(xtest,'r.');
hold on
plot(xReconstructed,'go');
あなたは、自動エンコーダで生成された追加データを表す緑色のcicrlesを見ることができます。
私は記事を読んだ。 1つのクエリ、自動エンコーダは監督されていません。しかし、私は訓練段階でラベルにアクセスできます。私が5つのクラスを持っているとします。 5つの異なるクラスの例を生成するために5つの別々の自動エンコーダを訓練する必要がありますか、それとも十分ですか?親切にお返事ください。 – roni
自動エンコーダーに1つのレイヤーしか使用しないと、再構成はどれくらい効果的でしょうか?このhttp://in.mathworks.com/help/nnet/ref/autoencoder.predict.htmlを確認してください。再構成された画像はかなり貧弱です。これにより、より多くのレイヤーを使用した場合、再構成がよりよくなるはずです。 。 – roni