2016-11-30 3 views
0

テンソルフローの画像分類を使用してプログラムを作成しています。私はtensorflowをgithubから入手しました。私が知っているのは、classify_image.pyを実行する方法です。追加カテゴリのテンソルフローモデルを再学習する

私がしたいことは、モデルを簡単に訓練するオプションがあることです。例えば、モデルは "キー"を知っていますが、私は "HouseKeys"のためにそれを訓練したいと思います。モデルが "HouseKeys"から "keys"を区別できるように、私は "これらの20個のイメージを取ってHouseKeysを学ぶ"と言うのに何らかの種類のスクリプトがありますか?

申し訳ありませんが、私のnooblinesと事前に感謝!

編集:明らかに、「HouseKeys」だけを認識できることは全く役に立たないので、モデルが以前知っていた他のカテゴリすべての知識を保持することは明らかです。

答えて

1

これは可能です。しかし、おそらくいくつかの調整が必要になるでしょう。

あなたが参照しているスクリプトは正確にはわかりませんが、少なくとも2つのpythonファイルがあると仮定します。 1つは実際のニューラルネットワークであり、もう1つはトレーニングと評価を扱うものです。

まず、ニューラルネットワークが新しいクラスを処理できることを確認する必要があります。このような何かを探してください。(例えばinput_x)のxが含まれていますが、テンソルを見れば誰が名前だ、

input_y = tf.placeholder(tf.float32, [None, classes], name="input_y") 

多くの時間、彼らは、データへの訓練入力を参照してください。

上記の例のように、yという名前のテンソルは、通常、ラベルを参照します。

上記のコードはinput_y可変長([None, classes]からNone)の寸法が、classesの各要素を有するタイプfloat32のテンソル(モーメントの配列を考える)、であると言います。

classesは3、input_yはこのようになりました場合:ちょうどだけでなく、それは次のようになります

[[0, 0, 1], [1, 0, 0], [0, 1, 0]] 

[[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 1, 0], [0, 0, 1]] 

を長さを変えることができますが、私たちはいつものように持っている必要があります要素のサイズ3(classes) 意味は、例えば、[0, 0, 1]は、インデックス2(1つのホット表記を探す)に1があるため、これがクラス2のラベルであることを意味します。

この点は、この種の入力を持つニューラルネットワークが最大3つのクラスを学習できることです。テンソルxの各入力には、テンソルyのラベルが関連付けられ、yのラベルは、1つのホット表記で0,1または2のいずれかになります。

このようにすると、たとえば「キー」、「ハウスキー」、「カーキー」などを学習できますが、たとえば「OfficeKeys」を追加することはできません。

最初の手順では、ネットワークで必要なラベルの最大数を知ることができます。

一度にすべてを学ぶ必要はありません。これは、ポイント2に私たちをもたらします:

見てくださいhere。これは、Tensorflow Saverクラスのドキュメントです。これにより、モデルを保存して読み込むことができます。

これは、2クラスのデータセットでモデルをトレーニングし、保存し、3クラスのデータセットを生成し、以前に保存したモデルとトレーニングを新しいデータセットにロードします。保存したモデルと同じ「知識」(重み)が適用されますが、3番目のクラスに適合するよう調整されます。

しかし、このためには、ネットワークが最初から3つのクラスを処理できることを確認する必要があります。

希望すると便利です。

関連する問題