【问题标题】:How can I get the activation value of each hidden layers of an ANN如何获得ANN每个隐藏层的激活值
【发布时间】:2016-09-09 03:18:09
【问题描述】:

我有一个 ANN 模型,我正在尝试获取所有隐藏层的激活值。我已经用 90dim 矩阵训练了网络,并且我有 1 个隐藏层,即 150dim。我的模型结构是一个 90dim 的输入层,一个 150dim 的隐藏层和一个 90dim 的输出。我已经训练并测试了数据。之后,我使用 .predict() 函数使用我的测试数据集预测输出。我将预测输出作为下一个输入提供,依此类推。现在我想得到预测函数隐藏层的激活值。我正在使用以下代码来实现它,但它不起作用:

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()

当我运行代码时,我得到一个 90dim 的输出,基本上我认为这是输出层数据集。 谁能告诉我代码有什么问题?

【问题讨论】:

    标签: python theano keras


    【解决方案1】:

    get_activations(next_prediction) 应该是 get_activations(X_test) - 您希望将输入传递给 get_activations,而不是标签。

    【讨论】:

    • 好吧,我用过“X_test”,但它似乎也不起作用。我没有得到隐藏层数据,而是得到了输出层数据。当我编写预测函数和激活函数的数据时,两个函数的输出完全相同。
    • 您可能还想要my_model.layers[0].get_output(train=False) 而不是my_model.layers[1].get_output(train=False)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2020-02-13
    相关资源
    最近更新 更多