Модель графика не показывает слои модели, только название модели - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь построить некоторую модель, используя TensorFlow2, поэтому я создаю класс своей модели следующим образом:

import tensorflow as tf

class Dummy(tf.keras.Model):
    def __init__(self, name="dummy"):
        super(Dummy, self).__init__()
        self._name = name

        self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
        self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)

    def call(self, inputs, training=False):
        x = self.dense1(inputs)
        return self.dense2(x)

model = Dummy()
model.build(input_shape=(None,5))

Теперь я хочу построить модель, используя summary(), возвращает то, что я ожидайте, plot_model(model, show_shapes=True, expand_nested=True) вернет только блок с названием модели.

Как я могу вернуть график моей модели?

1 Ответ

1 голос
/ 29 февраля 2020

Франсуа Шоле говорит следующее:

Вы можете делать все эти вещи (печать форм ввода / вывода) в функциональной или последовательной модели, потому что эти модели представляют собой c графики слоев.

Напротив, подклассовая модель представляет собой фрагмент кода Python (метод вызова). Здесь нет графика слоев. Мы не можем знать, как слои связаны друг с другом (потому что это определено в теле вызова, а не в виде явной структуры данных), поэтому мы не можем вывести формы ввода / вывода.

Существует два решения на это:

  1. Либо вы строите свою модель последовательно / с использованием функциональных API.
  2. Вы заключаете свою функцию 'call' в функциональную модель, как здесь:

class Subclass(Model):

def __init__(self):
    ...
def call(self, x):
    ...

def model(self):
    x = Input(shape=(24, 24, 3))
    return Model(inputs=[x], outputs=self.call(x))


if __name__ == '__main__':
    sub = subclass()
    sub.model().summary()

Ответ получен здесь: model.summary () не может печатать выходную форму при использовании модели подкласса

Также, это хорошая статья, прочитанная: https://medium.com/tensorflow/what-are-symbolic-and-imperative-apis-in-tensorflow-2-0-dfccecb01021

...