私はいくつかのデータで DNN モデルをトレーニングしており、学習した重みを分析して、私が研究している真のシステム (生物学におけるシグナル伝達カスケード) について何かを学びたいと考えています。生物学的 NN について学ぶために人工 NN を使用していると言えるでしょう。
トレーニング例ごとに、最上位層でシグナル伝達を担う単一の遺伝子を削除しました。
このシグナル伝達カスケードを NN としてモデリングし、最初の隠れ層のノードの 1 つを削除していると、ドロップアウトの実際のバージョンを実行していることに気付きました。
したがって、ドロップアウトを使用してモデルをトレーニングしたいと思いますが、オンラインで見たドロップアウトの実装はノードをランダムにドロップアウトするようです。必要なのは、トレーニング例ごとにドロップアウトするノードを指定する方法です。
これを実装する方法に関するアドバイスはありますか?私はどのパッケージにもオープンですが、現在、私がすでに行ったことはすべて Tensorflow にあるため、そのフレームワークを使用するソリューションをいただければ幸いです。
説明された詳細を好む人のために:
10 個の入力変数があり、最初のレイヤーの 32 個の relu ノードに完全に接続されています。これらは、出力に完全に接続されている 2 番目のレイヤー (relu) に完全に接続されています (回帰を行っているため線形)。
10 個の入力変数に加えて、28 個のノードのうちどれをドロップアウトする必要があるかもわかっています。
トレーニング時にこれを指定する方法はありますか?
現在使用しているコードは次のとおりです。
num_stresses = 10
num_kinase = 32
num_transcription_factors = 200
num_genes = 6692
# Build neural network
# Input variables (10)
# Which Node to dropout (32)
stress = tflearn.input_data(shape=[None, num_stresses])
kinase_deletion = tflearn.input_data(shape=[None, num_kinase])
# This is the layer that I want to perform selective dropout on,
# I should be able to specify which of the 32 nodes should output zero
# based on a 1X32 vector of ones and zeros.
kinase = tflearn.fully_connected(stress, num_kinase, activation='relu')
transcription_factor = tflearn.fully_connected(kinase, num_transcription_factors, activation='relu')
gene = tflearn.fully_connected(transcription_factor, num_genes, activation='linear')
adam = tflearn.Adam(learning_rate=0.00001, beta1=0.99)
regression = tflearn.regression(gene, optimizer=adam, loss='mean_square', metric='R2')
# Define model
model = tflearn.DNN(regression, tensorboard_verbose=1)