Хобрук: Ваш путь к мастерству в программировании

Ошибка Keras (с бэкэндом Tensorflow 2) при визуализации выходных данных слоя

Я использую Keras с tenorflow 2.0 и классифицирую изображения с помощью 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)

Что я здесь делаю не так? Я следил за книгой Франсуа Шоле, и там она использовалась точно так же. Любая помощь приветствуется.
sedy


  • Похоже на проблему подсети - см. эти вопросы и ответы < / а>. В качестве справки о будущих ошибках приведем код работает на всех бэкэндах (TF 1 и 2, Eager, Graph, keras, tf.keras). 24.05.2020
  • @OverLordGoldDragon: Не могли бы вы немного уточнить? 25.05.2020
  • Вы должны опубликовать воспроизводимый код; Я смогу скопировать и вставить его и увидеть точную ошибку, которую вы видите. Кроме того, всегда добавляйте теги Python и TensorFlow к своим вопросам Keras, чтобы повысить наглядность. 25.05.2020

Новые материалы

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..