Столбец «Подключен к» в model.summary () отсутствует после изменения от двух до одной выходной модели CNN - PullRequest
0 голосов
/ 11 июля 2019

Ссылаясь на пример из https://medium.com/tensorflow/training-and-serving-ml-models-with-tf-keras-fd975cc0fa27

Я пытаюсь адаптировать код для обеспечения единого вывода, но не могу понять, почему отсутствует столбец «Подключен к» при удалении одногоиз двух выходных слоев.

Исходный код работает, и модели сходятся к оптимальному, но когда один из двух выходов удален, модель, похоже, ничего не добивается, что заставляет меня искать неисправности и зацикливаться на том, почему «Подключен»столбец пропадает.

import tensorflow as tf
IM_SIZE = 128 # image size
BATCH_SIZE = 32 # batch size

image_input = tf.keras.Input(shape=(IM_SIZE, IM_SIZE, 3), name='input_layer')

# Some convolutional layers
conv_1 = tf.keras.layers.Conv2D(32, kernel_size=(3, 3), padding='same', activation='relu')(image_input)
conv_1 = tf.keras.layers.MaxPooling2D(padding='same')(conv_1)

# Flatten the output of the convolutional layers
conv_flat = tf.keras.layers.Flatten()(conv_1)

# Some dense layers with two separate outputs
fc_1 = tf.keras.layers.Dense(128, activation='relu')(conv_flat)
fc_1 = tf.keras.layers.Dropout(0.2)(fc_1)

# Output layers: separate outputs for the weather and the ground labels
weather_output = tf.keras.layers.Dense(4, activation='softmax', name='weather')(fc_1)
#ground_output = tf.keras.layers.Dense(13, activation='sigmoid', name='ground')(fc_1)

model = tf.keras.Model(inputs=image_input, outputs=weather_output)
#model = tf.keras.Model(inputs=image_input, outputs=[weather_output, ground_output])
print(model.summary())

Справа должен быть столбец "Подключен к", но он не появляется, и модель не достигает какого-либо улучшения точности во время тренировки.

Model: "model_11"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_layer (InputLayer)     [(None, 128, 128, 3)]     0         
_________________________________________________________________
conv2d_16 (Conv2D)           (None, 128, 128, 32)      896       
_________________________________________________________________
max_pooling2d_16 (MaxPooling (None, 64, 64, 32)        0         
_________________________________________________________________
flatten_11 (Flatten)         (None, 131072)            0         
_________________________________________________________________
dense_18 (Dense)             (None, 128)               16777344  
_________________________________________________________________
dropout_16 (Dropout)         (None, 128)               0         
_________________________________________________________________
weather (Dense)              (None, 4)                 516       
=================================================================
Total params: 16,778,756
Trainable params: 16,778,756
Non-trainable params: 0
_________________________________________________________________
None

1 Ответ

0 голосов
/ 12 июля 2019

Похоже, что подключенный к столбцу появляется только при наличии выходных слоев, которые указывают на те же предыдущие слои.

Пытались тренироваться на двух других наборах данных с точностью, улучшающейся до ~ 90% в течение 10-15 эпох. Предполагая, что это действительно работает до сих пор.

...