2016-10-17 11 views
1

私はTensorflow/kerasでの挑戦に苦労しています。Keras Input/Output

Iは、次いで、10ニューロンおよび出力1

入力がフロートと3次元ベクトルであり、出力は単純な浮動小数点値であるべきで、input_dim = 3とKerasにニューラルネットを構築有します。

私の問題は、フロートのフォーマット(> 1、0から1?、etc ...)と、どのような損失関数がこのタスク(何もバイナリはないと思います)にどう対応するのか分かりません。私は、ニューラルネットが3dベクトルから単純な浮動小数点値を計算したい。しかし、私のアウトプットが常に同じなので、決してうまくいかない。

私は何かを忘れてしまった場合は、私に知らせてください。もしあなたがそれにいくつかのアイデアがあれば、それは素晴らしいでしょう!

挨拶

編集:イム私は私が今やっている機械学習、全体の話題への導入が必要であるという事実を認識。その間、ケラをどのように使ってベリファイ/実際に機械学習をするかを知りたいと思います。私は愚かな質問をして申し訳ありませんが、誰かが私を助けてくれることを願っています。

入力:入力が「間違って」書式設定されているか、正規化されていないなどと思われますが、下記の間隔に値が変換されました。

model = Sequential() 
model.add(Dense(10, input_dim=3, init='normal', activation='sigmoid')) 
model.add(Dense(1, init='normal', activation='sigmoid')) 
model.compile(loss='mse', optimizer='sgd', metrics=['accuracy']) 
model.fit(X_Train, Y_Train, nb_epoch=100, batch_size=32, verbose=1) 

X_TrainとY_Trainは、.csvファイルから抽出された値は以下のとおりです。

これは私の単純なモデルです。たとえば、私の入力値は、0,038383,a、b、c < 1と-1 < d < 1(dが出力されます)の[a、b、c、d]です。

出力:

エポック500/500

32/32 [========================== ====] - 0 - 損失:0.0813 - ACC:0.0000E + 00

例(ランダム生成された値)は、すべての出力は、約0.43ほぼ同じである。

[0.97650245 0.30383579 0.74829968 ] [[ 0.43473071]]

[0.94985165 0.75347051 0.72609185] [[0.43473399]]

[0.18072594 0.18540003 0.20763266] [[0.43947196]]

+0

は、いくつかの(おそらくGitの要旨など)のコードと正確な出力を共有してください。 「出力は常に同じなので、決してうまくいかない」とはどういう意味ですか?自分のコードを見ずに同じ理由をどのように伝えることができますか? –

+0

あなたが使っている語彙から、私はあなたが機械学習の要点をよく紹介することで恩恵を受けると信じています。例えば。 MLの入力ベクトルの書式設定の考え方はよく知られていないようです。 _Normalizing_、はい –

答えて

2

私は自分の質問に答えるよ:

ここの問題はオプティマイザです!トレーニングデータとそれ以外の設定はそれほど重要ではありません。結果を変更するには、他のオプティマイザを試す必要があります。 これで今この問題を閉じることができます。ご協力ありがとうございました!

2

まず、入力サンプルを正規化(またはフォーマット)する必要はありません。

第2に、正確さがゼロであるという問題は、分類モデルに使用される指標として「精度」を使用したためです。あなたのケースでは、あなたのコンパイル方法でメトリクスとして(Kerasで)「MSE」または「メイ」のようなものを使用する必要があり、例えば、

model.compile(loss='mse', optimizer='sgd', metrics=['mae'])