2016-07-06 12 views
0

回帰のために訓練されたTensorFlowニューラルネットワークをさらに解析することが最善の方法であることを理解したいと思います。訓練されたTensorFlowの最大/最小NN

具体的には、訓練されたニューラルネットワークから最大値/最小値を見つける方法(回帰曲線から最大/最小値を見つけることに相当)を探しています。簡単な方法は、可能なすべての組み合わせを "試し"、最大/最小の結果セットをチェックすることですが、複数の入力と従属変数を持つ場合、すべての組み合わせをテストするとすぐに巨大なリソースシンクになります。

訓練されたTensorFlowニューラルネットワークを使用してこれらのさらなる分析を行う方法はありますか?

答えて

2

ネットワークは段階的に訓練されるので、徐々に最大のネットワークを見つけることができます。

入力サイズが100(10x10画像など)、スカラー出力サイズが1(たとえば、特定のタスクの画像のスコア)のニューラルネットワークがあるとします。
出力のローカル最大値を取得するまで、ランダムノイズから入力を段階的に変更することができます。入力に関連する出力のグラジエントだけが必要です。

input = tf.Variable(tf.truncated_normal([100], mean=127.5, stddev=127.5/2.)) 
output = model(input) 

grads = tf.gradients(output, input) 
learning_rate = 0.1 
update_op = input.assign_add(learning_rate * grads) 
+0

非常に有望に見える、私は誰もTFで勾配を簡単に得ることができるか分からなかった。私の理解のために、訓練を受けたネットワーク上で別の「GradientDescent」または「GradientAscent」を実行することを基本的に示唆していますか? – Ruehri

+0

はい、入力を手動で更新するだけなので、ネットワークのすべての重量が固定されます。すべてのパラメータが少なくなるため、収束が容易になります。 –

1

ANNは分析的にチェックできるものではありません。数百万の重みと数千のニューロン、異なるタイプの非線形活性化関数、畳み込みと最大プール層を持つことがあります。解析的に何も決定しません。実際、それがネットワークが漸進的に訓練される理由です。

+0

分析のアプローチが可能かどうか尋ねていませんでした。私の質問は、代わりに、潜在的にアルゴリズムをベースにしたソリューションに関するものでした。 – Ruehri

+0

まあ、オリビエの答えに頼るよりも、私は信じています。 –