Я пытаюсь использовать метод дополнения, чтобы проверить, как он влияет на обучение модели. Тем не менее, точность проверки и точность обучения чрезвычайно высоки на начальном этапе. Например, когда я тренируюсь с cifar-100, он достигает 98% точности обучения и более 90% точности проверки в первую эпоху. Интересно, стоит ли замедлять рост вместо такого быстрого подъема?
Я уже пытался установить weights
аргумент на None
вместо использования imagenet
предварительно обученных весов. Я могу видеть подобное явление даже в других проектах.
from tensorflow.python.keras.layers import Flatten, Dense, Dropout, GlobalMaxPooling2D, GlobalAveragePooling2D
from tensorflow.python.keras.models import Model
from tensorflow.python.keras.applications.resnet50 import ResNet50
from tensorflow.python.keras.datasets import cifar10, cifar100
from tensorflow.python.keras.utils import np_utils
from tensorflow.python.keras.optimizers import Adam, SGD
(x_train, y_train), (x_test, y_test) = cifar100.load_data()
y_train = np_utils.to_categorical(y_train, 100)
y_test = np_utils.to_categorical(y_test, 100)
net = ResNet50(include_top=False, input_tensor=None, weights=None, input_shape=[32, 32, 3])
x = net.output
x = GlobalMaxPooling2D()(x)
x = Dense(100, activation="softmax")(x)
net_final = Model(inputs=net.input, outputs=x)
net_final.summary()
net_final.compile(
optimizer=SGD(lr=1e-3, momentum=0.8),
loss="binary_crossentropy",
metrics=["accuracy"],
)
net_final.fit(x_train, y_train, batch_size=32, epochs=5, verbose=1, validation_data=(x_test, y_test), shuffle=True)