Я работаю над классификацией рака молочной железы. Я нашел этот онлайн-код для обучения своих предварительно обработанных выходных данных. Результаты были ужасными, но я не понял код, я хочу обучить свою собственную модель, но я не знаю, как заменить свой собственный код на этот.
Любая помощь будет оценена по достоинству.
in_model = tf.keras.applications.DenseNet121(input_shape=(224,224,3),
include_top=False,
weights='imagenet',classes = 2)
in_model.trainable = False
inputs = tf.keras.Input(shape=(224,224,3))
x = in_model(inputs)
flat = Flatten()(x)
dense_1 = Dense(4096,activation = 'relu')(flat)
dense_2 = Dense(4096,activation = 'relu')(dense_1)
prediction = Dense(2,activation = 'softmax')(dense_2)
in_pred = Model(inputs = inputs,outputs = prediction)
Вы забыли preprocess_input
:
Примечание. Каждое приложение Keras ожидает определенного вида предварительной обработки ввода. Для DenseNet вызовите tf.keras.applications.densenet.preprocess_input для ваших входных данных, прежде чем передавать их в модель.
inputs = tf.keras.Input(shape=(224,224,3))
x = tf.keras.applications.densenet.preprocess_input(inputs) # HERE
x = in_model(x)
Вы также можете попробовать использовать топ-сеть по умолчанию, установив include_top=True
или создать такую же топ-сеть:
x = layers.GlobalAveragePooling2D(name = "avg_pool")(x)
x = layers.Dense(2, activation='softmax', name='predictions')(x)
#Это модель глубокого обучения с использованием Keras. #модель CNN:
in_model = tf.keras.applications.DenseNet121(input_shape=(224,224,3),
include_top=False,
weights='imagenet',classes = 2)
# Во-первых, вам нужно создать модель CNN DenseNet121 с предварительно обученными весами #ImageNet. input_shape указывает форму входных изображений в модель. #include_top=False указывает, что мы не хотим включать в модель последний полностью подключенный #слой. Это потому, что мы хотим заменить последний слой нашими собственными #layers для нашей конкретной задачи. weights='imagenet' указывает, что мы хотим использовать предварительно обученные веса из набора данных ImageNet. Наконец, class = 2 указывает количество выходных классов для нашей конкретной задачи.
in_model.trainable = False
#Модель замораживает веса предварительно обученной модели, поэтому они не будут обновляться #во время обучения. Это потому, что мы хотим обучать только новые слои, которые мы добавляем в модель.
inputs = tf.keras.Input(shape=(224,224,3))
x = in_model(inputs)
#Теперь к входным изображениям применяется предварительно обученная модель для извлечения признаков.
flat = Flatten()(x)
#Теперь в следующих двух строках добавляем два полносвязных слоя по 4096 единиц в каждом и функции активации #ReLU. Эти слои добавляются для изучения более сложных функций из сглаженного вывода предварительно обученной модели.
dense_1 = Dense(4096,activation = 'relu')(flat)
dense_2 = Dense(4096,activation = 'relu')(dense_1)
#Следующий шаг заключается в добавлении выходного слоя модели. Это полносвязный слой с двумя модулями (по одному для каждого выходного класса) и функцией активации softmax. Этот слой будет выводить предсказанные вероятности класса для каждого входного #изображения.
prediction = Dense(2,activation = 'softmax')(dense_2)
#Наконец, вы создаете окончательную модель, определяя входной и выходной слои. #inputs и предсказание — это входной и выходной слои, которые мы определили ранее. Модель #resulting in_pred — это объект модели Keras, который можно обучать на данных для #специфической задачи классификации.
in_pred = Model(inputs = inputs,outputs = prediction)
Это похоже на ответ chatGPT.
Не задавайте открытых вопросов, мы принимаем только те вопросы, на которые можно ответить.