4

は畳み込みニューラルネットワークの作成にTFLearnを使用する際に混同行列を取得する方法をワークアウトの問題を持ちます。次のように私がこれまで持っているコードは次のとおりです。TfLearn混乱マトリックストレーニング:: bad_alloc

STD」のインスタンスを投げた後に呼び出さTERMINATE :: bad_alloc:私は、私は次のエラーメッセージが与えられています。このコードを実行しようと

from __future__ import division, print_function, absolute_import 

    import tflearn 
    from tflearn.layers.core import input_data, dropout, fully_connected 
    from tflearn.layers.conv import conv_2d, max_pool_2d 
    from tflearn.layers.normalization import local_response_normalization 
    from tflearn.layers.estimator import regression 

    from sklearn.metrics import confusion_matrix 
    import h5py 

    hdf5Test = h5py.File('/path', 'r') 

    X = hdf5Test['X'] 
    Y = hdf5Test['Y'] 

    # Building convolutional network 
    network = input_data(shape=[None, 240, 320, 3], name='input') 
    network = conv_2d(network, 32, 3, activation='relu', regularizer="L2") 
    network = max_pool_2d(network, 2) 
    network = local_response_normalization(network) 
    network = conv_2d(network, 64, 3, activation='relu', regularizer="L2") 
    network = max_pool_2d(network, 2) 
    network = local_response_normalization(network) 
    network = fully_connected(network, 128, activation='tanh') 
    network = dropout(network, 0.8) 
    network = fully_connected(network, 256, activation='tanh') 
    network = dropout(network, 0.8) 
    network = fully_connected(network, 2, activation='softmax') 
    network = regression(
     network, 
     optimizer='sgd', 
     learning_rate=0.01, 
     loss='categorical_crossentropy', 
     name='target' 
    ) 

    # Training 
    model = tflearn.DNN(network, tensorboard_verbose=0) 
    model.load('/path.tflearn') 

    predictions = model.predict(X) 
    print(confusion_matrix(Y, predictions)) 

毎回bad_alloc 中止(コアダンプ)

何かアドバイスがTFLearnに新しい、素晴らしいことだのstd :::何を() ' 。最後に

+0

あなたは同じ形状の合成データを生成するために、いくつかまたはあなたのデータ、またはコードを追加することはできますか? MWEが含まれている場合は、質問に簡単に回答できます。 – ncfirth

+0

また、完全なスタックトレースを含めることができますが、問題の原因がどこで診断されるかは簡単です。 – ncfirth

+0

私が使用しているデータセットはhttp://www.pitt.edu/~emotion/um-spread.htmです。各画像は3チャンネルで240 * 320です。テストのためにデータセットから無作為に採取された9679の画像があります。 – hudsond7

答えて

1

、それは私が予測しようとしていたデータのサイズが原因であることがわかりました。

predictedClasses = np.argmin(predictions, axis=1) 
actualClasses = np.argmax(Y, axis=1) 
print(confusion_matrix(actualClasses, predictedClasses)) 

このアプローチは、私のために働いて、あなたのために働く可能性があります。私は、混同行列を生成するためにSklearnを使用することができました

# Predict Classes 
predictions = [] 
count = 0 
length = len(X) 
for line in X: 
    print('Line ' + str(count) + ' of ' + str(length)) 
    tmp = model.predict_label([line]) 
    predictions.append(tmp[0]) 
    count += 1 

一部の書式付:私は、ループ内に挿入することによってこれを固定しました...私はTFLearnが混乱マトリックスの作成のための合理化されたアプローチを調べるべきだと思うので、他は同じ問題を持っていません。