#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