Почему у меня не было типичной кривой точности проверки, пока я тренировался с ResNet50? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь использовать метод дополнения, чтобы проверить, как он влияет на обучение модели. Тем не менее, точность проверки и точность обучения чрезвычайно высоки на начальном этапе. Например, когда я тренируюсь с 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)
...