2016-05-13 5 views
0

私はANNモデルを持っており、すべての隠しレイヤーの有効化値を取得しようとしています。私は90dimマトリックスでネットワークを訓練し、150dimの隠しレイヤーを1つ持っています。私のモデル構造は、1つの90dim入力レイヤー、1つの隠しレイヤー(150dim)と1つの出力(90dim)です。私はデータを訓練し、テストしました。その後、テストデータセットを使用して出力を予測するために.predict()関数を使用します。私は予測された出力を次の入力として供給しています。今、私は、予測関数の隠れた層の活性値を得たいと思っています。私はそれを達成するために、次のコードを使用していますが、そのは動作していない:ANNの各隠しレイヤーの有効化値を取得するには

write_predict_data = pd.ExcelWriter("/home/workstation/ANN/prediction_data_2.xlsx",engine="xlsxwriter") 

write_activations_data = pd.ExcelWriter("/home/rianzaman/Downloads/activition_of_hidden_node_2.xlsx",engine="xlsxwriter") 

for i in range(0, 200): 
    print("Predicting ...",) 
    next_prediction = my_model.predict(X_test, 1,) 
    output_file_data = pd.DataFrame(next_prediction) 
    output_file_data.to_excel(write_predict_data, sheet_name='Sheet1') 

    #To get activation 

    get_activations = theano.function([my_model.layers[0].input], my_model.layers[1].get_output(train=False), 
             allow_input_downcast=True) 
    activations = get_activations(next_prediction) 
    output_file_data_activation = pd.DataFrame(activations) 
    output_file_data_activation.to_excel(write_activations_data, sheet_name='Sheet1') 

X_test = next_prediction 
write_predict_data.save() 

私は、コードを実行しているmのとき、私は基本的に私は、出力層のセットだと思う90dim出力を得るメートル。 コードに何が間違っているか教えてもらえますか?

答えて

0

get_activations(next_prediction)get_activations(X_test)である必要があります - 入力はget_activationsでラベルではなく渡します。

+0

私は "X_test"を使いましたが、それはまた動作していないようです。私は隠れたレイヤのデータを取得せず、代わりに出力レイヤのデータを取得します。予測関数とアクティベーション関数のデータを書いているので、出力は両方の関数とまったく同じです。 –

+0

'my_model.layers [1] .get_output(train = False)ではなく、' my_model.layers [0] .get_output(train = False) 'を使用しますか? –

関連する問題