Классификация изображений с использованием CNN

Я работаю над классификацией рака молочной железы. Я нашел этот онлайн-код для обучения своих предварительно обработанных выходных данных. Результаты были ужасными, но я не понял код, я хочу обучить свою собственную модель, но я не знаю, как заменить свой собственный код на этот.

Любая помощь будет оценена по достоинству.

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)

Не задавайте открытых вопросов, мы принимаем только те вопросы, на которые можно ответить.

Dr. Snoopy 19.02.2023 23:06
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
1
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы забыли 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)) 

входной слой модели определяется как 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.

Frightera 19.02.2023 23:09

Другие вопросы по теме