2017-04-10 20 views
0

I持って、次のエラーの文...とValueError:エラーチェックモデル対象:期待activation_2形状を持っている(なし、761、1)が、得た形状を持つ配列(1、779、1)

ValueError: Error when checking model target: expected activation_2 to have shape (None, 761, 1) but got array with shape (1, 779, 1) 

エラーの場合、番号761の意味は分かりません。data1の形状は779 * 80です。私のdata3の形状は779 * 1です。ご協力ありがとうございました!

from __future__ import print_function 
from keras.preprocessing.image import ImageDataGenerator 
from keras.models import Sequential 

from keras.layers import Dense, \ 
         Dropout, \ 
         Activation, \ 
         Flatten 

from keras.layers import Convolution1D, \ 
         MaxPooling2D, \ 
         Convolution2D 

from keras.utils import np_utils 

import scipy.io as sio 
import numpy as np 

matfn = 'LIVE_data.mat' 

data = sio.loadmat(matfn) 
data0 = data['data'] 
data1 = np.ones((1, 779, 80)) 
data1[0, :, :] = data0 
data00 = data['label'] 
data2 = np.ones((1,779,1)) 
data2[0, :, :] = data00 
data000 = data['ref_ind_live'] 
data3 = np.ones((1, 779, 1)) 
data3[0, :, :] = data000 
batch_size = 64 
nb_classes = 30 
nb_epoch = 50 

X_train = data1 
y_train = data3 
X_test = data1[0, :] 
y_test = data3[0, :] 

X_train = X_train.astype('double') 
X_test = X_test.astype('double') 
X_train /= 255 
X_test /= 255 

# Convert class vectors to binary class matrices. 
Y_train = np_utils.to_categorical(y_train, nb_classes) 
Y_test = np_utils.to_categorical(y_test, nb_classes) 

model = Sequential() 

model.add(Convolution1D(32, \ 
         10, \ 
         border_mode = 'same', \ 
         input_shape = (779, \ 
             80))) 
model.add(Activation('relu')) 
model.add(Convolution1D(64, \ 
         10, \ 
         activation='relu')) 
model.add(Dropout(0.25)) 
model.add(Convolution1D(128, \ 
         10, \ 
         activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(1)) 
model.add(Activation('softmax')) 

# Let's train the model using RMSprop 
model.compile(loss = 'categorical_crossentropy', \ 
       optimizer = 'rmsprop', \ 
       metrics=['accuracy']) 

print("start train") 

model.fit(X_train, \ 
      Y_train, \ 
      batch_size = batch_size, \ 
      nb_epoch = nb_epoch, \ 
      shuffle = True) 

print("end") 

score = model.evaluate(X_test, \ 
         Y_test, \ 
         batch_size = 32) 

print('Test score:', \ 
     score[0]) 
print('Test accuracy:', \ 
     score[1]) 
+0

私はあなたのレイアウトを変更しました。あなたの古いレイアウトは大丈夫でしたが、一貫して適用されませんでした。また、あなたの価値観、運営者などは、しばしば互いに混乱していました。これは、分割されていない要素が、コードを読んでいる人と一緒にぼやけてしまう可能性があるため、最適ではありません。特に、レイアウトスタイルや使用されている技術の一部に慣れていない、これを行うには、 'data1 = np.ones((1,779,80))'とそれに続く25行で行ったように、あるいは残りのコードで行ったように、それらを区切る必要があります。 – toonice

+0

Pythonでスペーシングを実行する方法の詳細については、http://stackoverflow.com/questions/9714161/spaces-in-python-coding-styleおよびhttp://stackoverflow.com/questions/4172448/is-itを参照してください。 - 長い間の折れ線から複数行の折れ線になる可能性があります。 – toonice

答えて

0

モデル出力形状が(779, 1)と同じ形状を最終層に期待されているが、他の2畳み込み層にborder_mode = 'same'を添加することによって、それで761まで減少に起因する2畳み込み演算が問題を解決するだろう。

あなたはモデルの要約で確認できます。


レイヤ(タイプ)出力形状のParam#

conv1d_1(Conv1D)(なし、779、32)25632


activation_1 (活性化)(なし、779,32)0


conv1d_2(Conv1D)(なし、770、64)


dropout_1 20544(ドロップアウト)(なし、770、64)0


conv1d_3(Conv1D)(なし、761、128 )82048


dropout_2(ドロップアウト)(なし、761、128)0


01それは、デバッグが容易になるように

dense_13(高密度)(なし、761、1)129


activation_2(アクティベーション)(なし、761は、1)0

関連する問題