Какие другие типы веса для модельных оберток в Керасе? - PullRequest
0 голосов
/ 28 января 2020
from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

model = ResNet50(weights='imagenet')

В этом коде есть «обертка» (это то, к чему она относится) ResNet50. Какие другие типы весов я могу использовать для этого? Я попытался осмотреться, но я даже не понимаю исходный код; там тоже нет ничего убедительного

1 Ответ

0 голосов
/ 28 января 2020

Вы можете найти его на keras do c Или код github

Есть только два варианта, либо None, если вы просто хотите архитектура без весов или imagenet для загрузки весов imag enet.

Редактировать: как использовать наши собственные веса:

# Take a DenseNET201
backbone = tf.keras.applications.DenseNet201(input_shape=input_shape, weights=None, include_top=False)

# Change the model a little bit, because why not
input_image = tf.keras.layers.Input(shape=input_shape)
x = backcone(input_image)
x = tf.keras.layers.Conv2D(classes, (3, 3), padding='same', name='final_conv')(input)
x = tf.keras.layers.Activation(activation, name=activation)(x)
model = tf.keras.Model(input, x)

#... some additional code
# training part
optimizer = tf.keras.optimizers.Adam(lr=FLAGS.learning_rate)
model.compile(loss=loss,
              optimizer=optimizer,
              metrics=['accuracy', f1_m, recall_m, precision_m])

callbacks = [tf.keras.callbacks.ModelCheckpoint(filepath=ckpt_name)]

model.fit(train_generator, validation_data=validation_generator, validation_freq=1, epochs=10, callbacks=callbacks)

# using the callback there will weights saved in cktp_name each epoch
# Inference part, just need to reinstance the model (lines after #Change part comment)

model.load_weights(ckpt_name)

results = model.predict(test_generator, verbose=1)

Вам не нужно менять модель очевидно, вы могли бы использовать x = backbone(x), а затем model = tf.keras.Model(input, x)

...