私の現在の分類タスクでは、個々のクラスの入力機能にアクセスして、各クラスがその入力機能のみ (弱い分類器) でトレーニングされ、後でそれらのアンサンブルが得られるようにすることに興味があります。
これらの機能へのアクセスに問題があります。確かに、私は常に多次元配列と混同されます。次の MWE でクラス機能にアクセスしようとする方法の例を示します。
import keras
import numpy as np
from sklearn.model_selection import train_test_split
Data = np.random.randn(20, 1, 5, 4)
x,y,z = np.repeat(0, 7), np.repeat(1, 7), np.repeat(2, 6)
labels = np.hstack((x,y,z))
LABELS= list(set(np.ndarray.flatten(labels)))
Class_num = len(LABELS)
trainX, testX, trainY, testY = train_test_split(Data,
labels, test_size=0.20, random_state=42)
#...to categorical
trainY = keras.utils.to_categorical(trainY, num_classes=Class_num)
testY = keras.utils.to_categorical(testY, num_classes=Class_num)
ensemble = []
for i in range(len(LABELS)):
print('Train on class ' ,LABELS[i])
sub_train = trainX[trainY == i]
sub_test = testX[testY == i]
#model fit follows...
エラー:
Train on class 0
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-11-52ceeb9a1011> in <module>()
20 for i in range(len(LABELS)):
21 print('Train on class ' ,LABELS[i])
---> 22 sub_train = trainX[trainY == i]
23 sub_test = testX[testY == i]
24
IndexError: boolean index did not match indexed array along dimension 1; dimension is 1 but corresponding boolean dimension is 3
どうやら、配列のインデックス付けが間違っているようです。の形状に注意してくださいtrainX/testX
。