Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ян Анисимов. Введение в нейронные сети с исполь...

Ян Анисимов. Введение в нейронные сети с использованием Python

В докладе рассматриваются основные концепции и модели нейронных сетей. Показаны практические примеры их применения. Описываются основные фреймворки, которые используются в глубинном обучении. Даются их основные преимущества и недостатки. Даны примеры кода простых нейронных сетей, решающих прикладные задачи

Avatar for Python Community Chelyabinsk

Python Community Chelyabinsk

February 03, 2018
Tweet

More Decks by Python Community Chelyabinsk

Other Decks in Programming

Transcript

  1. Введение в нейронные сети с использованием Python Анисимов Ян Олегович

    Инженер-программист ООО "Инсит-телеком" Инженер-исследователь ЮУрГУ(НИУ) - yanchick - yanchick_ - yanchick.org - [email protected] Введение в нейронные сети с использованием Python 1 /25
  2. Исторические вехи развития нейросетей Гильберт(1900 г) Колмогоров(1957 г.) Розенблатт и

    ко(1960-1970 ее) ImageNet(2012 г.) Введение в нейронные сети с использованием Python 2 /25
  3. Постановка проблемы Исходный набор данных: X, Y ; Существующая или

    предполагаемая зависимость: X =⇒ Y ; Необходимо создать такую функцию F(θ, X), которая реализовала существующую зависимость. Предлагаемое решение: Y = f (n)(f (n−1)(...f (1)(X, θ(1)), θ(n−1))θ(n)) Проблема разработчиков подбор: f (i),θ(i), i = 1, n Задача обучения: arg opt θ E(F(x), Y ) Введение в нейронные сети с использованием Python 3 /25
  4. Графическая интерпретация Функция f (a, b) = (a + b)

    ∗ (b + 1) Введение в нейронные сети с использованием Python 4 /25
  5. Игровые модели Ключевые слова: AlphaGO, Reinforcement Learning, GYM AI Введение

    в нейронные сети с использованием Python 13 /25
  6. Tensorflow Плюсы: Поддержка программного гиганта Google Очень большое сообщество Интерфейсы

    низкого уровня и высокого уровня для сетевого обучения Чистая поддержка нескольких GPU Минусы: Изначально медленнее во многих тестах. Плохая поддержка RNN Введение в нейронные сети с использованием Python 16 /25
  7. Keras Плюсы: 1 Выбор backend из Theano или TensorFlow. 2

    Интуитивный интерфейс высокого уровня 3 Простая логика обучения Против: 1 Менее гибкий, более предписывающий, чем другие варианты Введение в нейронные сети с использованием Python 17 /25
  8. PyTorch Плюсы: Организационная поддержка Facebook Чистая поддержка динамических графиков API

    высокого уровня и низкого уровня Против: Гораздо менее зрелый, чем альтернативы. Ограниченные ссылки / ресурсы за пределами официальной документации Введение в нейронные сети с использованием Python 18 /25
  9. Theano Плюсы: 1 Гибкий 2 Работает при правильном использовании Против:

    1 Сложная кривая обучения 2 API нижнего уровня 3 Компиляция сложных символических графов может быть медленной Введение в нейронные сети с использованием Python 19 /25
  10. Lasagne Плюсы: Сравнительно гибкий Более высокий уровень абстракции Документы и

    код содержат много каламбуров Против: Небольшое сообщество Введение в нейронные сети с использованием Python 20 /25
  11. CIFAR-10. Tensorflow Lines 1–16 1 with tf. variable_scope (’conv1 ’)

    as scope: kernel = _variable_with_weight_decay (’weights ’, shape =[5, 5, 3, 64], stddev =5e-2, 5 wd =0.0) conv = tf.nn.conv2d(images , kernel , [1, 1, 1, 1], padding=’SAME ’) biases = _variable_on_cpu (’biases ’, [64] , 10 tf. constant_initializer (0.0)) pre_activation = tf.nn.bias_add(conv , biases) conv1 = tf.nn.relu(pre_activation , name=scope.name) _activation_summary (conv1) 15 pool1 = tf.nn.max_pool(conv1 , Введение в нейронные сети с использованием Python 23 /25
  12. CIFAR-10. Tensorflow Lines 17–32 17 ksize =[1, 3, 3, 1],

    strides =[1, 2, 2, 1], padding=’SAME ’, name=’pool1 ’) 20 norm1 = tf.nn.lrn(pool1 , 4, bias =1.0 , alpha =0.001 / 9.0, beta =0.75 , name=’norm1 ’) with tf. variable_scope (’conv2 ’) as scope: 25 kernel = _variable_with_weight_decay (’weights ’, shape =[5, 5, 64, 64], stddev =5e-2, wd =0.0) conv = tf.nn.conv2d(norm1 , 30 kernel , [1, 1, 1, 1], padding=’SAME ’) biases = _variable_on_cpu (’biases ’, [64] , Введение в нейронные сети с использованием Python 23 /25
  13. CIFAR-10. Tensorflow Lines 33–48 33 tf. constant_initializer (0.1)) pre_activation =

    tf.nn.bias_add(conv , biases) 35 conv2 = tf.nn.relu(pre_activation , name=scope.name) _activation_summary (conv2) norm2 = tf.nn.lrn(conv2 , 4, bias =1.0, 40 alpha =0.001 / 9.0, beta =0.75 , name=’norm2 ’) pool2 = tf.nn.max_pool(norm2 , ksize =[1, 3, 3, 1], strides =[1, 2, 2, 1], 45 padding=’SAME ’, name=’pool2 ’) with tf. variable_scope (’local3 ’) as scope: Введение в нейронные сети с использованием Python 23 /25
  14. CIFAR-10. Tensorflow Lines 49–64 49 reshape = tf.reshape(pool2 , 50

    [FLAGS.batch_size , -1]) dim = reshape.get_shape ()[1]. value weights = _variable_with_weight_decay (’weights ’, shape =[dim , 384] , stddev =0.04 , wd =0.004) 55 biases = _variable_on_cpu (’biases ’, [384] , tf. constant_initializer (0.1)) local3 = tf.nn.relu( tf.matmul(reshape , weights) + biases , name=scope.name) 60 _activation_summary (local3) with tf. variable_scope (’local4 ’) as scope: weights = _variable_with_weight_decay (’weights ’, shape =[384 , 192] , Введение в нейронные сети с использованием Python 23 /25
  15. CIFAR-10. Tensorflow Lines 65–80 65 stddev =0.04 , wd =0.004)

    biases = _variable_on_cpu (’biases ’, [192] , tf. constant_initializer (0.1)) local4 = tf.nn.relu( tf.matmul(local3 , weights) + biases , 70 name=scope.name) _activation_summary (local4) with tf. variable_scope (’softmax_linear ’) as scope: weights = _variable_with_weight_decay (’weights ’, 75 [192 , NUM_CLASSES], stddev =1/192.0 , wd =0.0) biases = _variable_on_cpu (’biases ’, [NUM_CLASSES], tf. constant_initializer (0.0) softmax_linear = tf.add(tf.matmul(local4 , weights) 80 biases , name=scope.name) Введение в нейронные сети с использованием Python 23 /25
  16. CIFAR-10. Tensorflow Lines 81–96 81 _activation_summary ( softmax_linear ) Введение

    в нейронные сети с использованием Python 23 /25
  17. CIFAR-10. Keras 1 model = Sequential () model.add(Conv2D (32, (3,

    3), padding=’same ’, input_shape=x_train.shape [1:])) model.add(Activation(’relu ’)) 5 model.add(Conv2D (32, (3, 3))) model.add(Activation(’relu ’)) model.add(MaxPooling2D(pool_size =(2, 2))) model.add(Conv2D (64, (3, 3), padding=’same ’)) 10 model.add(Activation(’relu ’)) model.add(Conv2D (64, (3, 3))) model.add(Activation(’relu ’)) model.add(MaxPooling2D(pool_size =(2, 2))) 15 model.add(Flatten ()) model.add(Dense (512)) model.add(Activation(’relu ’)) model.add(Dense(num_classes )) model.add(Activation(’softmax ’)) Введение в нейронные сети с использованием Python 24 /25