2017-08-21 8 views
0

さまざまな写真を分類したいと思います。猫と犬。そのためには、入力が猫であるか犬であるかだけを分類する一般的なネットワーク "A"を訓練したい。その後、一般的なクラスごとに特殊なサブネットワークが、犬や猫の競走を予測する必要があります。ケラスで複数のネットワークを持つ階層を作成する方法は?

私はkerasの機能について知っています。どのように出力を別のレイヤーやネットワークに渡すことができますか?私の問題は出力を1つの専用ネットワークに渡す方法です。対応する特別なネットワークが使用されます。

だから私はkerasにそのような何かを構築したい:

x = Input(shape(100,)) 
network_a_out = NetworkA(100)(x) 
if(network_a_out == classCat) 
    out = NetworkCat(100)(x) # predict special race of cat 
else: 
    out = NetworkDog(100)(x) # predict special race of dog 

には、いくつかのif/else文を使用せずにkerasでこれを解決するための良い方法はありますか?

+1

あなたは既に前に同じ質問をしました:https://stackoverflow.com/questions/45736869/how-to-combine-multiple-neural-networks-in-kerasそれをしないでください。 –

+0

私は古い質問を削除しましたが、これは理解しやすいと思っています。 –

+0

そのコードはうまくいかないでしょう。あなたは、3つの別々のネットワークを使っている方が良いでしょう。その方法では、動物の種類と動物の種類に焦点を当てたセカンダリネットワークの新しい機能がレイヤーに追加されます。 – DJK

答えて

0

犬/猫を予測する最後のレイヤーを削除して、犬/猫のレースを予測する新しいレイヤーを追加することができます。つまり、最初のNNを事前にネットワークとして使用して、動物の競合を予測します。 犬やその他のネコのために事前にネットワークをトレーニングする必要があります。

+0

はい、私は自分の問題を解決する方法を知っていますどのように私はkeras(またはtensorflow)でこれを行うことができます私は最初のNNの出力を渡すことができ、すべての特殊なネットワークに渡すことができますが、私はどのように出力を対応する特殊なネットワークに渡すことができないif/elseすべてのサブクラス) –

+0

訓練されたNN(犬/猫を予測する)を保存したとします。新しいスクリプトでは、そのネットワークをロードし、最後のレイヤーを削除し、新しいレイヤー(ドッグレースの数の最後のレイヤー)を追加し、この事前トライアルネットをドッグレースデータでトレーニングします。トレーニングの後、別のファイルにNNを保存することができます。 同じことを行って、猫競走を予測します。 – asabater

関連する問題