распечатать значения формы для всех размеров для заданного входа в модель Keras - PullRequest
1 голос
/ 29 мая 2020

У меня есть простая модель Keras -

def print_tensor_shape(x):
    print(x.shape)
    return x

def stem(stem_width=32):
    inputs = keras.layers.Input(shape=[None, None, 3])
    X = keras.layers.ZeroPadding2D((1,1))(inputs)
    X = keras.layers.Conv2D(stem_width, kernel_size = 3, strides = 2, activation='relu')(X)
    keras.layers.Lambda(print_tensor_shape)(X)
    return keras.models.Model(inputs=inputs, outputs=X) 

Я хочу просмотреть точную форму тензора для указанного c входного тензора после сверточного слоя. Однако, когда я запускаю -

inputs = tf.zeros([32,512,512,3])
out = stem()(inputs)

, я получаю

(None, None, None, 32)

Я хочу знать точные значения для первых трех измерений для ввода формы [32,512,512,3], а не просто [None, None, None]. Кто-нибудь может помочь мне сделать это?

1 Ответ

1 голос
/ 29 мая 2020

вывод на печать, который вы видите (None, None, None, 32), не связан с введенными вами данными. это обычно относится к размеру слоя. Если вы хотите проверить требуемую печать, позаботьтесь о подключении слоя Lambda в вашей модели. это позволяет вызывать функцию каждый раз, когда вы передаете новый ввод

def print_tensor_shape(x):
    print(x.shape)
    return x

def stem(stem_width=32):
    inputs = keras.layers.Input(shape=[None, None, 3])
    X = keras.layers.ZeroPadding2D((1,1))(inputs)
    X = keras.layers.Conv2D(stem_width, kernel_size = 3, strides = 2, activation='relu')(X)
    X = keras.layers.Lambda(print_tensor_shape)(X)
    return keras.models.Model(inputs=inputs, outputs=X) 

inputs = tf.zeros([32,512,512,3])
out = stem()(inputs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...