Постоянные прогнозы CNNPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Постоянные прогнозы CNN

Сообщение Anonymous »

Я строю модель Keras, основанную на MobilEnetv2 для прогнозирования 6 человеческих компетенций. Каждая выходная головка представляет компетентность и представляет собой Softmax более 100 классов (баллы 0–99). Модель принимает 224x224 рамки RGB, нормализованную с [-1, 1] (совместимая с предварительной обработкой MobilEnetV2). Стоит отметить, что мой набор данных довольно маленький (138 5-минутные видео обрабатываемые кадры по кадру). < /P>
Вот упрощенная версия моей модели: < /p>
def create_model(input_shape):
inputs = tf.keras.Input(shape=input_shape)

base_model = MobileNetV2(
input_tensor=inputs,
weights='imagenet',
include_top=False,
pooling='avg'
)

for layer in base_model.layers:
layer.trainable = False

for layer in base_model.layers[-20:]:
layer.trainable = True

x = base_model.output
x = layers.BatchNormalization()(x)
x = layers.Dense(256, use_bias=False)(x)
x = layers.BatchNormalization()(x)
x = layers.Activation('relu')(x)
x = layers.Dropout(0.3)(x)
x = layers.BatchNormalization()(x)

outputs = [
layers.Dense(
100,
activation='softmax',
kernel_initializer='he_uniform',
dtype='float32',
name=comp
)(x)
for comp in LABELS
]

model = tf.keras.Model(inputs=inputs, outputs=outputs)

lr_schedule = tf.keras.optimizers.schedules.CosineDecay(
initial_learning_rate=1e-4,
decay_steps=steps_per_epoch*EPOCHS,
warmup_target=5e-3,
warmup_steps=steps_per_epoch
)

opt = tf.keras.optimizers.Adam(lr_schedule, clipnorm=1.0)
opt = tf.keras.mixed_precision.LossScaleOptimizer(opt)

model.compile(
optimizer=opt,
loss={comp: tf.keras.losses.SparseCategoricalCrossentropy()
for comp in LABELS},
metrics=['accuracy']
)
return model
< /code>
Модель достигает очень высокой точности в учебных данных (возможно, переосмысление). Тем не менее, он предсказывает один и тот же выходной вектор для каждого входа, даже на случайных входах. Это дает очень низкое разнообразие прогнозирования предварительного обучения, а также < /p>
test_input = np.random.rand(1, 224, 224, 3).astype(np.float32)
predictions = model.predict(test_input)
print("Pre-train prediction diversity:", [np.std(p) for p in predictions])
< /code>
Мои вопросы:
1. Почему модель предсказывает один и тот же выходной вектор на разных входах - даже случайные - после тренировки?
2. Почему выходное разнообразие до тренировок так низкое?

Подробнее здесь: https://stackoverflow.com/questions/796 ... redictions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Постоянные прогнозы CNN
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Постоянные прогнозы CNN
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Постоянные прогнозы CNN
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Постоянные прогнозы CNN
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Разница между входной формой для 1D CNN, 2D CNN и 3D CNN
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»