1

同じ学習率や運動量などを使用して異なるレイヤーの精度スコアを比較できるように、ニューラル ネットワークに隠しレイヤーを追加しようとしています。

だから私は次のものを持っています:

from nolearn.dbn import DBN 
from sklearn.cross_validation import train_test_split

from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score

numFeat = 50 * 64 
labs = ["BC", "FL", "PRO1", "PRO2", "RP", "SD"]  # Defect types

hiddenAr = [numFeat, 6] # initial params for dbn
pos = len(hiddenAr) - 1

with open("all_defects.csv") as f:
reader = csv.reader(f)
for row in reader:
    input = [int(x) for x in row[:numFeat]]  
    labels += [labs.index(row[-1])]  # categorical labels in numerical form
    data += [input]

X_train, X_test, y_train, y_test = train_test_split(
data, labels, test_size=0.25) 

for i in range (0, layer):
    hiddenAr.insert(pos, 300) # Add hidden layer

    dbn = DBN(
    hiddenAr,
    # Learning rate of algorithm
    learn_rates = 0.03,
    # Decay of learn rate
    learn_rate_decays=1,
    # Iterations of training data (epochs)
    epochs=10,
    # Verbosity level
    verbose=1,
    momentum= 0.03,
    use_re_lu=True
    ) 

私がそこで行ったことは、毎回別の非表示レイヤーに別の 300 ノードを追加することです。ただし、何らかの理由でレイヤーを追加すると、多くの npmat.py エラーが発生します。

これには明らかな理由がありますか?評価用のグラフとcsvファイルを簡単に生成できるように、非表示レイヤー自体を追加するように自動化したいと本当に思っています。

エラーは、非表示の配列に 2 番目のレイヤーが追加された後に発生します。つまり、i = 1 の場合で、次の後に各レイヤーが追加された場合に発生します。

npmat.py:433: RuntimeWarning: target.numpy_array[:] = vec.numpy_array + self.numpy_array の追加で無効な値が検出されました

RuntimeWarning: 以下の target.numpy_array[:] = self.numpy_array < val で無効な値が検出されました

RuntimeWarning: より大きい値で無効な値が検出されました

npmat.py:969: RuntimeWarning: 乗算で無効な値が検出されました

データ: https://drive.google.com/file/d/0B12vhoNivII6My1GQ3E3T3JxQm8/view?usp=sharing

4

0 に答える 0