Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Keras中改变预先训练的CNN模型中的层输出?_Python_Image_Tensorflow_Keras_Conv Neural Network - Fatal编程技术网

Python 如何在Keras中改变预先训练的CNN模型中的层输出?

Python 如何在Keras中改变预先训练的CNN模型中的层输出?,python,image,tensorflow,keras,conv-neural-network,Python,Image,Tensorflow,Keras,Conv Neural Network,我在Keras中运行VGG16进行图像分类,如下所示: model = VGG16() image = load_img('mug.jpg', target_size=(224, 224)) image = img_to_array(image) image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2])) image = preprocess_input(image) yhat = model.predic

我在Keras中运行VGG16进行图像分类,如下所示:

model = VGG16()
image = load_img('mug.jpg', target_size=(224, 224))
image = img_to_array(image)
image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))
image = preprocess_input(image)
yhat = model.predict(image)
label = decode_predictions(that)
label = label[0][0]

# print the output
print('%s (%.2f%%)' % (label[1], label[2]*100))
现在我想查看第一层的输出,并对其进行更改/添加噪波,并查看分类如何更改。我不知道如何做到这一点,也找不到任何适合我的查询的资源


我是Keras的新手,因此在这方面的任何帮助都将受到高度赞赏。谢谢大家!

任何层的输出都可以通过

model.layers[index].output
所以在你的情况下你可以

outputlayer1 = model.layers[0].output
outputlayer1 += noise

稍后要进行正向传递,您可以迭代层并进行正向传递。有关前向传递,请参阅此链接中的调用函数

任何层的输出都可以通过

model.layers[index].output
所以在你的情况下你可以

outputlayer1 = model.layers[0].output
outputlayer1 += noise

稍后要进行正向传递,您可以迭代层并进行正向传递。在这个环节

前面的调用函数中,在模型层的末尾添加层是可以的,但是我认为中间添加层会降低模型的准确性。毕竟,你在某种程度上损害了模型的完整性,它需要重新训练。如果我错了,请纠正我。是的,这会影响精度。在模型层的末尾添加层是可以的,但是我认为中间添加层会降低模型的准确性。毕竟,你在某种程度上损害了模型的完整性,它需要重新训练。如果我错了,请纠正我。是的,这会影响准确性。当我使用自己的模型并从头开始训练时,这没关系。但我的问题是关于预先训练过的模型。预先训练过的模型不也是同一类的实例吗?我想在初始化预训练模型之后,您应该能够以与您自己的模型相同的方式访问其元素和函数。或者我遗漏了一些正确的东西,但我想在第一层之后插入噪声,看看它对推断的影响。基本上,第一层的噪声输出将作为下一层的输入,依此类推。因此,当模型试图预测时,或者在我不确定如何进行推断的过程中,您必须进行更改。除了在预先训练的模型中插入一个嘈杂的层并将其存储为新模型之外,我看不到其他方法。当我使用自己的模型并从头开始训练时,这没关系。但我的问题是关于预先训练过的模型。预先训练过的模型不也是同一类的实例吗?我想在初始化预训练模型之后,您应该能够以与您自己的模型相同的方式访问其元素和函数。或者我遗漏了一些正确的东西,但我想在第一层之后插入噪声,看看它对推断的影响。基本上,第一层的噪声输出将作为下一层的输入,依此类推。因此,当模型试图预测时,或者在我不确定如何进行推断的过程中,您必须进行更改。除了在预先训练的模型中插入一个嘈杂的层并将其存储为新模型之外,我看不到其他方法。