首页 > 解决方案 > 可视化层输出时出现 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 的书,在那里也使用了类似的方法。任何帮助是极大的赞赏。
赛迪

标签: pythontensorflowkerastensorflow2.0

解决方案


推荐阅读