Где данные изображения фильтра в этом примере TensorFlow?

#tensorflow #machine-learning #artificial-intelligence #conv-neural-network #sample

#tensorflow #машинное обучение #искусственный интеллект #conv-нейронная сеть #пример

Вопрос:

Я пытаюсь использовать этот учебник от Google, чтобы использовать TensorFlow Estimator для обучения и распознавания изображений: https://www.tensorflow.org/tutorials/estimators/cnn

Данные, которые я вижу в руководстве: train_data, train_labels, eval_data, eval_labels:

 ((train_data,train_labels),(eval_data,eval_labels)) = 
tf.keras.datasets.mnist.load_data();
  

В сверточных слоях должны быть данные изображения фильтра объектов для умножения на входные данные изображения? Но я не вижу их в коде.

Как указано в этом руководстве, входные данные изображения совпадают с данными изображения фильтра для проверки низкоуровневых объектов (кривых, ребер и т. Д.), Поэтому Также должны быть данные изображения фильтра (правая матрица на изображении ниже)?: https://adeshpande3.github.io/A-Beginner’s-Guide-To-Understanding-Convolutional-Neural-Networks

введите описание изображения здесь

Комментарии:

1. Что именно вы ожидаете увидеть? Фильтры представляют собой весовые матрицы Conv2d слоев в коде. Первый сверточный слой в вашем учебном примере содержит 32 таких фильтра.

2. разве фильтры не предопределены, как кривая мыши выше?

3. Нет. Фильтры — это основные вещи, которые модель изучает на этапе обучения. Они инициализируются случайным образом. Тот факт, что ранние слои обычно соответствуют краям, цветам и т. Д. (Например, кривой стыка), Является просто замечательным результатом того, как CNN изучают свои слои. Необходимость изучать эти вещи самостоятельно, чтобы классифицировать, и именно поэтому они это делают.

4. ткс, это меня просветило. не могли бы вы предоставить подробный ответ, например, о том, что изучается на первом уровне conv, 2-м уровне conv и т. Д.?

5. Да, CNN (и ANN в целом) и то, что они могут изучать, довольно удивительно. Добавлено немного более глубокое объяснение. Вам нужно будет продолжить свои исследования, чтобы углубиться дальше

Ответ №1:

Фильтры представляют собой весовые матрицы Conv2d слоев, используемых в модели, и не являются предварительно загруженными изображениями, как «кривая стыка», которую вы привели в примере. Если бы это было так, нам нужно было бы предоставить CNN все возможные типы форм, кривых, цветов и надеяться, что любые невидимые данные, которые мы передаем модели, содержат где-то в них эти конечные наборы изображений, которые модель может распознать.

Вместо этого мы позволяем CNN изучать фильтры, необходимые для успешной классификации, из самих данных, и надеемся, что они смогут обобщить новые данные. С помощью множества итераций и данных (которых им требуется много) модель итеративно создает наилучший набор фильтров для успешной классификации изображений. Случайная инициализация в начале обучения гарантирует, что все фильтры на уровне научатся идентифицировать разные объекты на входном изображении.

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

Сеть использует эти примитивные фильтры на более ранних уровнях для генерации более сложных интерпретаций на более глубоких уровнях. В этом сила распределенного обучения: представление сложных функций с помощью множества приложений гораздо более простых функций.

Комментарии:

1. Ссылка на отличную статью о визуализации различных слоев обученного CNN. Это объяснит это намного лучше, чем я когда-либо мог. arxiv.org/abs/1311.2901