2017-10-26 9 views
-1

TensorFlowはつまり、私はTensorFlow推定

estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns) 

およびその他のように見える一つは、サンプルコードの二つの異なる家族を見てきた、実際に最適化プロセスを実行するための2つの異なるAPIを持っているようですその外観は

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) 

です。これらは本物の代替品です。各サンプル・プログラムはどちらか一方を使用しますが、両方を使用しません。

これらのうちどれを使用する必要がありますか?一方は非推奨になっていますか? 1つは単純なケース用で、もう1つはより複雑なケース用ですか?

+0

これらは、 "ベストフィット"の解決策を近似する2つの異なる方法です。 2つの方法について読んでください。それらは機械学習の文献でかなりよくカバーされています。 – Prune

答えて

1

TensorFlowは、いくつかの異なるレベルの抽象レベルでAPIを提供しています。より高度なAPIを使用することで、利便性と開発/実験の容易さを柔軟に犠牲にして購入しています。 cost、これはデフォルトでLinearRegressorの二乗誤差です。しかし、あなたはすぐに、LinearRegressorのオプションがそれをかなりカットしていない状況で自分自身を見つけるかもしれません。たとえば、サンプルに依存関係があると、別のコスト関数を手動で指定する必要があります。その場合は、レイヤーをドロップダウンし、あまり抽象的なAPIを使用しないでください。

実際には、さまざまなバージョンを知っていても簡単に解決できます。解決しようとしている問題の抽象度を適切なレベルに落とすことができます。

TensorFlowに対する高水準APIの別の例は、Kerasです。

1

これら二つのものが

estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns) 

は(あなたは、コンストラクタで設定することができ、独自のオプティマイザを含む)線形回帰を作成し、ハイレベルの抽象化は本当に比較することはできません

しばらく、

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) 

はモデルアーキテクチャを定義しておらず、単純に特定のモデルで使用される最適化方法を定義しています。

あなたがしたい場合は、あなたがあなたを混同コード例のより詳細な内訳をしたい場合はoptimizer="Ftrl"

にそうでなければ、デフォルトパラメータでoptimizer="SGD"を指定することにより、オプティマイザとしてGradientDescentOptimizerとLinearRegressorをインスタンス化できそれは正確に何を参照する必要があります。