2015-08-29 51 views
-1

我試圖使用k-fold cross validation爲此我需要與像下面執行的培訓set.I做相應處理:ValueError異常:操作數無法與numpy的不同形狀的廣播一起?

num_folds = 5 
subset_size = num_training/num_folds 
validation_accuracies = [] 

    for i in range(num_folds): 
     Xcross_valid_set = X_train[i*subset_size:][:subset_size].shape 
     # print X_train[:i*subset_size].shape,X_train[(i+1)*subset_size:] 
     Xtrain_set = X_train[:i*subset_size] + X_train[(i+1)*subset_size:] 
     #Xtrain_set=np.concatenate(X_train[:i*subset_size] , X_train[(i+1)*subset_size:]) 
     Ycross_valid_set=y_train[i*subset_size:][:subset_size] 
     Ytrain_set=y_train[:i*subset_size]+y_train[(i+1)*subset_size:] 

的問題是X_train[:i*subset_size]該形狀是(0,3072)X_train[(i+1)*subset_size:]是在i=0的情況下。我曾嘗試使用numpy.concatenate但沒有工作(40000,3072)

結果形狀將是(40000,3072)此處作爲第一項給出0 row.So如果第一術語得到(10,3072)和第二項給出(30,3072),則結果形狀將(40 ,3072)即40行。我怎樣才能將兩個不同的形狀合併成一個訓練集?

+0

只應索引與一組括號的數組:'X_train [I * subset_size:subset_size]'。你打算用'+'做什麼?如果添加numpy的陣列,它增加了他們的價值觀,它不將它們連接起來(像列表)。請閱讀:http://wiki.scipy.org/Tentative_NumPy_Tutorial – askewchan

回答

1

np.concatenate需求爲第一個參數陣列的列表:

Xtrain_set = np.concatenate([X_train[:i*subset_size], X_train[(i+1)*subset_size:]]) 
相關問題