Ссылка на документацию.
Насколько я понимаю, модели keras имеют веса, предварительно обученные с помощью набора данных imag enet. В целях обучения я хочу тренироваться с нуля с произвольно инициализированными весами.
Сначала я загружаю модель из керас. Здесь я не включил аргумент weights='imagenet'
, который видел в некоторых примерах. Если я не включу этот аргумент, означает ли это, что вес модели инициализируется случайным образом?
import os, sys
from keras.utils.vis_utils import plot_model
from keras.applications import VGG16
from keras.layers import Input
from keras.optimizers import SGD
base_model = VGG16(, include_top=False, input_tensor=Input(shape = (224,224,3)))
base_model.summary()
plot_model(base_model, to_file=model_diagram_path, show_shapes=True)
Затем я добавил выходные слои в модель. Я воспроизвел ту же структуру, что и в оригинальной модели VGG16.
from keras.layers.core import Flatten
from keras.layers.core import Dense
from keras.utils.vis_utils import plot_model
from keras.models import Model
# Create head part
head_model = base_model.output
head_model = Flatten(name='flatten')(head_model)
head_model = Dense(4096,activation='relu')(head_model)
head_model = Dense(4096,activation='relu')(head_model)
head_model = Dense(len(class_names),activation='softmax')(head_model)
# Attach head to model
model = Model(inputs=base_model.input, outputs = head_model)
model_diagram_path = 'vgg16-output-modified.png'
plot_model(model, to_file=model_diagram_path, show_shapes=True)
Позволяет ли этот подход обучать модель с нуля? Если нет, то каков правильный подход?