2016-05-22 19 views
7

Ecco il codice snippato dal tutorial di cifar10. È dal cifar10.py.cosa fa il metodo tf.nn.lrn()?

# conv1 
with tf.variable_scope('conv1') as scope: 
kernel = _variable_with_weight_decay('weights', shape=[5, 5, 3, 64], 
            stddev=1e-4, wd=0.0) 
conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME') 
biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0)) 
bias = tf.nn.bias_add(conv, biases) 
conv1 = tf.nn.relu(bias, name=scope.name) 
_activation_summary(conv1) 

# pool1 
pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], 
        padding='SAME', name='pool1') 
# norm1 
norm1 = tf.nn.lrn(pool1, 4, bias=1.0, alpha=0.001/9.0, beta=0.75, 
       name='norm1') 

Cosa fa il metodo tf.nn.lrn? Non riesco a trovare una definizione nella documentazione API su https://www.tensorflow.org/versions/r0.8/api_docs/python/index.html

risposta

3

Come nessuno accennato, tf.nn.lrn è l'abbreviazione di tf.nn.local_response_normalization (documentation)

Inoltre, this question fornisce buone risorse per ulteriori informazioni in strati risposta normalizzazione.

Da:http://caffe.berkeleyvision.org/tutorial/layers.html#data-layers

"Lo strato risposta normalizzazione locale esegui una sorta di‘inibizione laterale’normalizzando su regioni ingresso locali In modalità ACROSS_CHANNELS, le regioni locali estendersi attraverso canali vicini, ma hanno. nessuna estensione spaziale (cioè hanno forma local_size x 1 x 1). Nella modalità WITHIN_CHANNEL, le regioni locali si estendono spazialmente, ma sono in canali separati (cioè hanno forma 1 x local_size x local_size). Ogni valore di input è diviso per (1+ (α/n) Σix2i) β, dove n è la dimensione di ogni regione locale, e la somma è presa sulla regione centrata su quel valore (si aggiunge zero padding dove necessario ary)."

Questi livelli sono caduti in disgrazia perché hanno avuto un impatto minimo sui risultati e altre tecniche si sono dimostrate più vantaggiose.

+5

quali altre tecniche sono meglio usare? – Kyrol