下述程序展示了如何实现VGG16模型的不同层的输出:
- #importing required libraries and functions
- from keras.models import Model
- #defining names of layers from which we will take the output
- layer_names = ['block1_conv1','block2_conv1','block3_conv1','block4_conv2']
- outputs = []
- imageimage = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))
- #extracting the output and appending to outputs
- for layer_name in layer_names:
- intermediate_layer_model = Model(inputs=model.input,outputs=model.get_layer(layer_name).output)
- intermediate_output = intermediate_layer_model.predict(image)
- outputs.append(intermediate_output)
- #plotting the outputs
- fig,ax = plt.subplots(nrows=4,ncols=5,figsize=(20,20))
-
- for i in range(4):
- for z in range(5):
- ax[i][z].imshow(outputs[i][0,:,:,z])
- ax[i][z].set_title(layer_names[i])
- ax[i][z].set_xticks([])
- ax[i][z].set_yticks([])
- plt.savefig('layerwise_output.jpg')

如图所示,VGG16(除block5外)的每一层都从图像中提取了不同特征。起始层对应的是类似边缘的低级特征,而后一层对应的是车顶、排气等特征。
结语 (编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|