Özellikle Keras'a yeni ve şekillerde sorun yaşıyorum, özellikle de RNN ve LSTM'ler söz konusu olduğunda.Python/Keras - Boyutların yanlış sayısı: beklenen 3, şekil 2 ile aldım (119, 80)
Bu kod kullanıyorum:
model.add(SimpleRNN(init='uniform',output_dim=1,input_dim=len(pred_frame.columns)))
model.compile(loss="mse", optimizer="sgd")
model.fit(X=predictor_train, y=target_train, batch_size=len(pred_frame.index),show_accuracy=True)
değişken predictor_train 119 iç dizilerle bir numpy dizisi, 80 farklı ürün içeren her biridir.
bu hatayı yaşıyorum:
TypeError: ('Bad input argument to theano function with name "/Library/Python/2.7/site-packages/keras/backend/theano_backend.py:362" at index 0(0-based)', 'Wrong number of dimensions: expected 3, got 2 with shape (119, 80).')
Şimdiye kadar öğrendim bir RYSA (batch_size, dilimler, boyut) şekline sahip 3D tensörünü aldığı ve sen batch_size input_shape ayarladığınızda neler genellikle atlanır ve sadece bir zaman çizelgesi vermelisiniz (zaman çizelgeleri, boyut). Ancak, kodun hangi bölümünde değiştirilmelidir (eğer mümkünse, kod değiştirme önerilerinizi ekleyin)?
Aydınlanma gerekli! Ben ... Bir süre bu konuda
EKSTRA INFO sıkışıp kaldım
About pred_frame
tipi: Sınıf 'pandas.core.frame.DataFrame'
şekil: (206,80)
Pred Pred Pred ...
Date
1999-01-01 NaN NaN NaN
1999-02-01 NaN NaN NaN
1999-03-01 NaN NaN NaN
1999-04-01 NaN NaN NaN
...
2015-11-01 288.333333 -0.044705 589.866667
2015-12-01 276.333333 -0.032157 1175.466667
2016-01-01 282.166667 0.043900 1458.966667
2016-02-01 248.833333 -0.082199 5018.966667
[206 rows x 80 columns]
About target_train
türü: sınıfının pandas.core.series.Series '
şekli: (119),
d_type:
Date
2004-10-01 0.003701
2005-05-01 0.001715
2005-06-01 0.002031
2005-07-01 0.002818
...
2015-05-01 -0.007597
2015-06-01 -0.007597
2015-07-01 -0.007597
2015-08-01 -0.007597
About predictor_train
türü: 'numpy.ndarray'
şekli: (119,80)
d_type: görünüşte @ Y300 için
[[ 0.00000000e+00 -1.00000000e+00 1.03550000e-02 ..., 8.42105263e-01
6.50000000e+01 -3.98148148e-01]
[ -1.13600000e-02 -1.07482052e+00 -9.25333333e-03 ..., 4.45783133e-01
8.30000000e+01 -1.94915254e-01]
[ 4.71300000e-02 -5.14876761e+00 1.63166667e-03 ..., 4.45783133e-01
8.50000000e+01 -1.94915254e-01]
...,
[ 4.73500000e-02 -1.81092653e+00 -8.54000000e-03 ..., 1.39772727e+00
2.77000000e+02 -3.43601896e-01]
[ -6.46000000e-03 -1.13643083e+00 1.06100000e-02 ..., 2.22551929e-01
2.77000000e+02 -3.43601896e-01]
[ 3.14200000e-02 -5.86377709e+00 1.50850000e-02 ..., 2.22551929e-01
2.82000000e+02 -2.76699029e-01]]
DÜZENLEME
sayesinde float64 3d problem aşıldı. Şimdi şekilim (119,1,80). Bununla birlikte, modelde hala bir şekillendirme sorunu yaşıyorum.aşağıdaki gibi hizalama satırı:
File "/Library/Python/2.7/site-packages/theano/tensor/blas.py", line 1612, in perform
z[0] = numpy.asarray(numpy.dot(x, y))
ValueError: ('shapes (119,80) and (119,1) not aligned: 80 (dim 1) != 119 (dim 0)', (119, 80), (119, 1))
Apply node that caused the error: Dot22(Alloc.0, <TensorType(float32, matrix)>)
Inputs types: [TensorType(float32, matrix), TensorType(float32, matrix)]
Inputs shapes: [(119, 80), (119, 1)]
Inputs strides: [(320, 4), (4, 4)]
Inputs values: ['not shown', 'not shown']
Neden oluyor ve nasıl düzeltebilirim? ,
--------------------------------------------------------------------------------
Initial input shape: (None, None, 100)
--------------------------------------------------------------------------------
Layer (name) Output Shape Param #
--------------------------------------------------------------------------------
SimpleRNN (simplernn) (None, 1) 102
--------------------------------------------------------------------------------
Total params: 102
--------------------------------------------------------------------------------
Gördüğünüz gibi:
sayesinde, görünüşe göre şekil (119,1,80) ile bir 3d tensörünün oluşturmak mümkün olmuştur. Ancak yine de, soruya yaptığım düzenlemede yukarıda açıklanan şekil hatası alıyorum. Bu şekil hatasının nerede olduğu hakkında bir fikrin var mı? – abutremutante
Sorununuzu çözdünüz mü? Model özeti 'Başlangıç giriş şeklinden: (Yok, Yok, 119)', 119 uzunluğundaki bir özellik vektörünü beklediği gibi görünüyor, ama sizinki 80'dir. – y300