На этом сайте я видел несколько вопросов о Deep Dream, однако ни один из них, по-видимому, фактически не говорит о том, что конкретно делает DeepDream. Насколько я понял, они, похоже, изменили целевую функцию, а также изменили обратное распространение, так что вместо обновления весов они обновляют входное изображение.
Я интересно, если кто-нибудь точно знает, что сделал Google. Они упоминают в одной из своих статей о введении Байеса априорных, когда они осуществляют свою оптимизацию, и с этим я могу себе представить, что получение нейронной сети выплюнуть изображения для каждой метки не так уж сложно - мы можем просто установить метку, а затем оптимизировать входной вектор соответственно.
Тем не менее, интересная часть глубокого сна заключается в том, что он делает это для каждого слоя, и в этом отношении я не совсем уверен, как он подчеркивает детали для каждого слоя.
Конечно, подача изображения даст вам значения для каждого нейрона, но тогда как мы можем использовать эту информацию, чтобы преувеличивать детали исходного изображения? Я изо всех сил пытался найти какие-либо подробные описания об этом.
Ссылки: Здесь vzn ответил на аналогичный вопрос: /cs//a/44857/49671
По этой ссылке есть реализация Deepdream, здесь: http://auduno.com/post/125362849838/visualizing-googlenet-classes
Кроме этого , не предлагают преувеличения функций , как обсуждалось здесь: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html
Где они оба показывают визуализацию отдельных классов и отдельных слоев и говорят:
Вместо того, чтобы точно указывать, какую функцию мы хотим усилить в сети, мы также можем позволить сети принять это решение. В этом случае мы просто передаем в сеть произвольное изображение или фотографию и позволяем сети анализировать изображение. Затем мы выбираем слой и просим сеть улучшить то, что он обнаружил.