在Keras中,CNN层的计算结果与实际的计算结果不同模型.predi

2024-06-15 01:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

history = model.fit(x_spectro_train, y_train_onehot, batch_size=batch_size, epochs=training_epochs, validation_data =(x_spectro_test, y_test_onehot), shuffle=True, callbacks=callbacks_list,class_weight=class_weights, verbose=1)


model=load_model(model_name)
predict_prob_train = model.predict(x_spectro_train,batch_size=batch_size) 


inp = model.input                                           # input placeholder
outputs = [layer.output for layer in model.layers]          # all layer outputs
functors = [K.function([inp, K.learning_phase()], [out]) for out in outputs]    # evaluation functions
layer_outs = [func([x_spectro_train, 0.]) for func in functors] #test mode (0.0), train mode(1.0)

我想保存CNN层输出。 我想用CNN层输出训练svm模型(不是概率)

所以我使用了来自Keras, How to get the output of each layer?的代码并看到了结果。你知道吗

但是我的CNN层的结果和模型.预测. 我监视val的准确性,保存最好的模型,然后加载它。 这是我模型的结构。(下图)

enter image description here

我期望层输出[13](最后一层)的结果与预测概率序列相同。然而,结果却不同。(如下图)

enter image description here

为什么结果不同?你知道吗


Tags: in模型testlayerforsizemodelbatch
1条回答
网友
1楼 · 发布于 2024-06-15 01:26:06

Conv层之后有7个层(其中2个是Dense)。他们还学习了一些东西,他们正在对模型输出进行“决策”。你知道吗

这样想:Conv输出一些东西,也就是Dense1->;Dense2的输入。所有这些层次都在同时学习。所以Dense1层的目标是了解Conv层“试图告诉它”是什么,如何解释Conv层的结果。如果将图像输入到Dense1层,然后再输入到Dense2层,则不会得到相同的结果(也不会得到正确的结果)。所有这些层都在一起工作以得到正确的预测。你知道吗

不能隔离一个层并期望得到正确的结果。你知道吗

相关问题 更多 >