Anonymous
Model.summary() не может распечатать выходную форму при использовании модели подкласса
Сообщение
Anonymous » 03 ноя 2025, 12:49
Это два метода создания модели keras, но форма вывода сводных результатов этих двух методов различна. Очевидно, что первый печатает больше информации и облегчает проверку корректности сети.
Код: Выделить всё
import tensorflow as tf
from tensorflow.keras import Input, layers, Model
class subclass(Model):
def __init__(self):
super(subclass, self).__init__()
self.conv = layers.Conv2D(28, 3, strides=1)
def call(self, x):
return self.conv(x)
def func_api():
x = Input(shape=(24, 24, 3))
y = layers.Conv2D(28, 3, strides=1)(x)
return Model(inputs=[x], outputs=[y])
if __name__ == '__main__':
func = func_api()
func.summary()
sub = subclass()
sub.build(input_shape=(None, 24, 24, 3))
sub.summary()
вывод:
Код: Выделить всё
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 24, 24, 3) 0
_________________________________________________________________
conv2d (Conv2D) (None, 22, 22, 28) 784
=================================================================
Total params: 784
Trainable params: 784
Non-trainable params: 0
_________________________________________________________________
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) multiple 784
=================================================================
Total params: 784
Trainable params: 784
Non-trainable params: 0
_________________________________________________________________
Итак, как мне использовать метод подкласса, чтобы получить выходную форму в summary()?
Подробнее здесь:
https://stackoverflow.com/questions/552 ... lass-model
1762163344
Anonymous
Это два метода создания модели keras, но форма вывода сводных результатов этих двух методов различна. Очевидно, что первый печатает больше информации и облегчает проверку корректности сети. [code]import tensorflow as tf from tensorflow.keras import Input, layers, Model class subclass(Model): def __init__(self): super(subclass, self).__init__() self.conv = layers.Conv2D(28, 3, strides=1) def call(self, x): return self.conv(x) def func_api(): x = Input(shape=(24, 24, 3)) y = layers.Conv2D(28, 3, strides=1)(x) return Model(inputs=[x], outputs=[y]) if __name__ == '__main__': func = func_api() func.summary() sub = subclass() sub.build(input_shape=(None, 24, 24, 3)) sub.summary() [/code] вывод: [code]_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) (None, 24, 24, 3) 0 _________________________________________________________________ conv2d (Conv2D) (None, 22, 22, 28) 784 ================================================================= Total params: 784 Trainable params: 784 Non-trainable params: 0 _________________________________________________________________ _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_1 (Conv2D) multiple 784 ================================================================= Total params: 784 Trainable params: 784 Non-trainable params: 0 _________________________________________________________________ [/code] Итак, как мне использовать метод подкласса, чтобы получить выходную форму в summary()? Подробнее здесь: [url]https://stackoverflow.com/questions/55235212/model-summary-cant-print-output-shape-while-using-subclass-model[/url]