問題タブ [autoencoder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 単語認識用にトレーニング済みの HMM モデル
オートエンコーダーを使用して音素分類子を実装しました (オーディオ ファイル配列を指定すると、認識されたすべての音素が返されます)。単語認識が可能になるように、このプロジェクトを拡張したいと考えています。与えられた音素のリストから単語を認識するトレーニング済みの HMM モデル (英語) は存在しますか?
みんなありがとう。
python - テンソルフローは変数をコピーしますが、次のレイヤーを事前トレーニングするためにトレーニングできません
オートエンコーダーを実装したい(正確にスタックされた畳み込みオートエンコーダーにする)
ここでは、最初に各レイヤーを事前トレーニングしてから微調整したいと思います
そこで、各レイヤーの重みの変数を作成しました
元。最初のレイヤーの W_1 = tf.Variable(initial_value, name,trainable=True など)
そして、最初のレイヤーの W_1 を事前トレーニングしました
次に、2 番目のレイヤー (W_2) の重みを事前トレーニングします。
ここでは、2 番目のレイヤーの入力を計算するために W_1 を使用する必要があります。
ただし、W_1 はトレーニング可能であるため、W_1 を直接使用すると、tensorflow が W_1 を一緒にトレーニングする可能性があります。
したがって、W_1 の値を保持するが訓練可能ではない W_1_out を作成する必要があります
正直なところ、このサイトのコードを変更しようとしました
https://github.com/cmgreen210/TensorFlowDeepAutoencoder/blob/master/code/ae/autoencoder.py
102行目で、次のコードで変数を作成します
ただし、エラーが発生するため、初期化されていない値が使用されます
変数をコピーするが、次のレイヤーを事前トレーニングするためにトレーニングできないようにするにはどうすればよいですか??
neural-network - Denoising AutoEncoder を使用して元のデータを再構築する
生データには、生物学的実験データのように十分な情報が含まれていない場合があります。サイズが 100*1000 の遺伝子発現データセットがあります。Denoising AutoEncoder を使用して、同じサイズ (100*1000) の再構成された出力を取得したいと考えています。それはどのように可能でしょうか?
machine-learning - Autoencoder のタイド ウェイト
私はオートエンコーダーを見ていて、タイの重みを使用するかどうか疑問に思っていました。事前トレーニングのステップとしてそれらを積み重ねてから、非表示の表現を使用して NN にフィードするつもりです。
固定されていない重みを使用すると、次のようになります。
f(x)=σ 2 ( b 2 + W 2 *σ 1 ( b 1 + W 1 *x))
タイド ウェイトを使用すると、次のようになります。
f(x)=σ 2 ( b 2 + W 1 T *σ 1 ( b 1 + W 1 *x))
非常に単純化した見方からすると、重みを結び付けると、エンコーダー部分がアーキテクチャに基づいて最適な表現を生成することが保証されるのに対し、重みが独立している場合、デコーダーは最適でない表現を効果的に取得し、それでもデコードできると言えますか?
デコーダーが「魔法」が発生する場所であり、エンコーダーのみを使用してNNを駆動するつもりである場合、それは問題ではないのでお願いします。
machine-learning - 事前トレーニングにスタック オートエンコーダーを使用する方法
スタックされたオートエンコーダーを事前トレーニングのステップとして使用したいとしましょう。
私の完全な自動エンコーダーが 40-30-10-30-40 だとしましょう。
私の手順は次のとおりです。
- 入力層と出力層の両方で元の 40 個の特徴データ セットを使用して 40-30-40 をトレーニングします。
- 上記の 40-30 エンコーダーのトレーニング済みエンコーダー部分のみを使用して、元の 40 特徴の新しい 30 特徴表現を導き出します。
- 入力レイヤーと出力レイヤーの両方で、新しい 30 個の特徴データ セット (手順 2 で取得) を使用して 30-10-30 をトレーニングします。
- ステップ 1 の 40-30 でトレーニングされたエンコーダーを取得し、それをステップ 3 の 30-10 からのエンコーダーにフィードして、40-30-10 エンコーダーを提供します。
- ステップ 4 から 40-30-10 エンコーダーを取得し、それを NN の入力として使用します。
a) それは正しいですか。
b) 元の 40 特徴データ セットから 10 特徴表現を事前生成し、新しい 10 特徴表現データ セットでトレーニングするのと同じである NN をトレーニングするときに、40-30-10 エンコーダーの重みを固定しますか?
PS。エンコーダーとデコーダーの重みを結び付ける必要があるかどうかについて、既に質問があります。
python - Keras でカスタム アクティビティ レギュラライザーを正しく実装するにはどうすればよいですか?
ここに示すように、Andrew Ng のレクチャー ノートに従って、スパース オートエンコーダーを実装しようとしています。ペナルティ項 (KL ダイバージェンス) を導入することにより、オートエンコーダ層にスパース制約を適用する必要があります。いくつかのマイナーな変更の後、ここで提供されている方向を使用してこれを実装しようとしました。これは、以下に示すように、SparseActivityRegularizer クラスによって実装された KL ダイバージェンスとスパース ペナルティ項です。
モデルはそのように構築されました
fit() 関数を呼び出すと、負の損失値が得られ、出力は入力とまったく似ていません。どこが間違っているのか知りたいです。レイヤーの平均活性化を計算し、このカスタム スパース正則化を使用する正しい方法は何ですか? どんな種類の助けも大歓迎です。ありがとう!
最新の Keras (1.0.1) ビルドには Autoencoder レイヤーがないため、Python 2.7 で Keras 0.3.1 を使用しています。
python - オートエンコーダーをエンコーダーとデコーダーに分離する方法 (TensorFlow + TFLearn)
私は tflearn を使って簡単なオートエンコーダーを書いています。
モデルは適切にトレーニングされていますが、トレーニング後、エンコーダーとデコーダーを別々に使用したいと考えています。
どうすればいいですか?現在、入力を復元できます。入力を非表示表現に変換し、任意の非表示表現から入力を復元できるようにしたいと考えています。
neural-network - 早期停止指標として損失または精度を使用する必要がありますか?
私はニューラル ネットワークの学習と実験を行っていますが、次の問題について経験豊富な人から意見を求めたいと思います。
Keras ('mean_squared_error' 損失関数と SGD オプティマイザー) で Autoencoder をトレーニングすると、検証損失が徐々に減少しています。検証精度が上がっています。ここまでは順調ですね。
ただし、しばらくすると、損失は減少し続けますが、精度は突然、はるかに低いレベルに戻ります。
- 精度が非常に速く上昇し、高いままで突然低下するのは「正常な」動作ですか、それとも予想される動作ですか?
- 検証損失がまだ減少している場合でも、最大精度でのトレーニングを停止する必要がありますか? つまり、val_acc または val_loss をメトリックとして使用して、早期停止を監視しますか?
画像を参照してください:
更新: 以下のコメントは私を正しい方向に向けてくれました。誰かが次のことが正しいことを確認できればうれしいです:
精度メトリックは y_pred==Y_true の % を測定するため、分類にのみ意味があります。
私のデータは実数とバイナリの特徴の組み合わせです。損失が減少し続ける一方で、精度グラフが非常に急激に上昇し、その後低下する理由は、エポック 5000 付近で、ネットワークがおそらくバイナリ機能の +/- 50% を正しく予測したためです。トレーニングを続けると、エポック 12000 付近で、リアル フィーチャとバイナリ フィーチャの予測が一緒に改善されたため、損失は減少しましたが、バイナリ フィーチャだけの予測は少し正確ではなくなりました。そのため、精度は低下しますが、損失は減少します。