2016-11-13 8 views
0

現在、入力データを所望の出力データにマッピングできる線形回帰ネットワークを作成しようとしています。私のモデルを鍛えることができない理由

私の入力と出力は現在、numpy.ndarrayとして格納されている行列のリストとして格納されています。

回帰ネットワークの入力寸法が400 あり、回帰ネットワークの出力寸法が13

ある入力側の各マトリクスは、印刷入力によって寸法[400、X] =>出力を有する[0 ] .shape

出力側の各マトリクスは、印刷出力によって寸法[13、X] =>出力を有している[0]

を.shape iは現在定義されてきたネットワークは次のようになります

print "Training!" 
model = Sequential() 
model.add(Dense(output_dim=13, input_dim=400, init="normal")) 
model.add(Activation("relu")) 
print "Compiling" 
model.compile(loss='mean_squared_error', optimizer='sgd') 
model.fit(input,output,verbose=1) 

問題は列車の段階です。

何とか時間がかかり、進行状況に関する情報はありません。システムが停止したように見えて、このエラーメッセージで終了しました。

Traceback (most recent call last): 
    File "tensorflow_datapreprocess_mfcc_extraction_rnn.py", line 169, in <module> 
    model.fit(train_set_data,train_set_output,verbose=1) 
    File "/usr/local/lib/python2.7/dist-packages/keras/models.py", line 620, in fit 
    sample_weight=sample_weight) 
    File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1034, in fit 
    batch_size=batch_size) 
    File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 961, in _standardize_user_data 
    exception_prefix='model input') 
    File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 51, in standardize_input_data 
    '...') 
Exception: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 arrays but instead got the following list of 270 arrays: [array([[ -1.52587891e-04, 3.05175781e-05, -1.52587891e-04, 
     -5.18798828e-04, 3.05175781e-05, -3.96728516e-04, 
      1.52587891e-04, 3.35693359e-04, -9.15527344e-05, 
      3.3... 

エラーが私の入力データを解析する方法かもしれないと思います。これは私にとっては黒い魔法です。 numpyのトレーニングデータの配列、またはnumpyのアレイのリスト複数の入力を有する モデル場合:ドキュメントが

https://keras.io/models/model/

fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None) 

Xと述べています。モデル内のすべての入力に名前が付いている場合は、 も入力名をNumpy配列にマッピングする辞書を渡すことができます。

y:モデル に複数の出力がある場合、ターゲットデータのナンシー配列、またはナンシー配列のリスト。モデル内のすべての出力に名前が付けられている場合は、 もNumpy配列に出力名をマッピングする辞書を渡すことができます。

Numpyアレイのリストは何ですか?それが読まなければならない行を知っているかどうか?...私は知らない。 numpy.ndarraysは各配列が行であるnumpy.arraysのリストとして格納されていると思います。

それはとてもこの単純な例によると思わ:

入力:

import numpy as np 

lis = [] 
output_data = np.random.rand(5,3) 
output_data_1 = np.random.rand(5,2) 
lis.append(output_data) 
lis.append(output_data_1) 
print output_data.shape 
print output_data_1.shape 
print lis 

出力:

(5, 3) 
(5, 2) 
[array([[ 0.15509364, 0.20140267, 0.13678847], 
     [ 0.2, 0.38430659, 0.87265863], 
     [ 0.01053336, 0.28403731, 0.19749507], 
     [ 0.95775409, 0.96032907, 0.46996195], 
     [ 0.29515174, 0.74466708, 0.78720968]]), array([[ 0.34216058, 0.74972468], 
     [ 0.97262113, 0.84451951], 
     [ 0.72230052, 0.30852572], 
     [ 0.47586734, 0.03382701], 
     [ 0.37998285, 0.80772875]])] 

は、だから私は間違って何をやっていますか?なぜデータをモデルに渡すことができないのですか?

+0

あなたの形には「x」とは何ですか? "入力側の各マトリックスは、print input [0]によって出力された[400、x] =>ディメンションを持ちます。形状 出力側の各マトリックスの寸法は[13、x] =>プリント出力[0] .shape " – pyan

+0

xで、yはnumpy.ndarraysのリストです。 –

答えて

1

入力numpy配列を転置します。 Kerasでは入力配列の形状が(number_of_samples, number_of_features)である必要があります。

+0

so ... x.shape?またはx [0] .shape? –

+0

あなたは試しましたか? – pyan

+0

入力はnumpy.ndarraysのリストなのでinput.shapeを出力することはできません 私は入力[0] .shapeを与えることができます。.. どちらである:。 (400、288) 400は、入力された機能の数で、288はサンプルこの含まndarrayの数である –

関連する問題