python - 可视化层输出时出现 Keras(带有 Tensorflow 2 后端)错误
问题描述
我正在使用带有 tensorflow 2.0 的 Keras,并且正在使用 Mobilenetv2_ 对图像进行分类。训练和验证的代码运行良好。现在,我想可视化某些层的激活。这是我的代码的一部分:
from __future__ import print_function
from datetime import datetime
import numpy as np
import matplotlib.pyplot as plt
from sklearn.utils import class_weight
from tensorflow.keras import backend as k
k.backend.image_data_format= 'channels_last' # for remote run
from tensorflow.keras import layers
from tensorflow.keras.preprocessing.image import ImageDataGenerator,load_img,img_to_array
from tensorflow.keras import optimizers,models
from keras.models import model_from_json
from tensorflow.keras.applications import InceptionResNetV2,MobileNetV2
from tensorflow.keras.applications.inception_resnet_v2 import preprocess_input
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.keras.callbacks import ReduceLROnPlateau
#import cv2
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.utils import multi_gpu_model
from helper_func import save_batch_info,smooth_curve,save_model_hyperparam,save_plots,get_batch_stats
import tensorflow as tf
import os
# ********** SOME CODE HERE *************************
def Mobilenetv2_finetune_model():
MobileNet_tuned = MobileNetV2(weights='C:\\ML\\mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_96_no_top.h5'
, include_top=False,input_shape=(W_rz, H_rz, nc),alpha =1)
#If alpha < 1.0, proportionally decreases the number of filters in each layer.
# If alpha > 1.0, proportionally increases the number of filters in each layer.
model = models.Sequential()
model.add(MobileNet_tuned)
model.add(layers.Flatten())
model.add(layers.Dropout(0.1))
model.add(layers.Dense(nclass, activation='softmax'))
return model,MobileNet_tuned
model,conv_bs = Mobilenetv2_finetune_model()
#****************** Visualizing intermediate activations ***************
layer_outputs = [layer.output for layer in model.layers[0].layers[:17]]
activation_model = models.Model(inputs=model.input, outputs=layer_outputs)
img_pth = 'C://ML//test//52.png'
img_tst = img_to_array(load_img(img_pth, target_size=(96,96)))
activations = activation_model.predict(img_tst)
这是来自线路
activation_model = models.Model(inputs=model.input, outputs=layer_outputs)
我在这里做错了什么?我遵循了 Francois Chollet 的书,在那里也使用了类似的方法。任何帮助是极大的赞赏。
赛迪
解决方案
推荐阅读
- php - 隐藏的mod仅针对某些路径重写到子文件夹
- php - PHP 不显示 HTML 输入
- android - 如果 gradle 中包含生命周期扩展,kotlin-android-extensions 将停止工作
- php - 使用 Digital Ocean 通过 IP 在 nginx 服务器上配置多站点
- c++ - 当我尝试从设备复制时,cudaMemcpy 返回 cudaErrorInvalidValue
- ruby-on-rails - 无法在 ubuntu for windows (wls) 上下载 heroku
- python - 如何在 Alfred Workflows 中将参数传递给 Python 脚本
- ssh - 建议重新启动后无法通过 ssh 连接到计算引擎
- c++ - “无法开始调试。没有进程与此对象关联。” - 在 Visual Studio Code 中使用 GDB 和 openOCD 的 STM32F4
- awk - AWK,用引号括起来的逗号分隔字段