2017-05-28 4 views
13

का उपयोग करते समय L2 नियमितकरण जोड़ें tf.layers में परिभाषित परतों का उपयोग करते समय L2 नियमितकरण जोड़ना संभव है?उच्च स्तरीय tf.layers

ऐसा लगता है कि चूंकि tf.layers एक उच्च स्तरीय रैपर है, फ़िल्टर वजन तक पहुंचने का कोई आसान तरीका नहीं है।

tf.nn.conv2d

regularizer = tf.contrib.layers.l2_regularizer(scale=0.1) 

weights = tf.get_variable(
    name="weights", 
    regularizer=regularizer 
) 

#Previous layers 

... 

#Second layer 
layer 2 = tf.nn.conv2d(
input, 
weights, 
[1,1,1,1], 
[1,1,1,1]) 

#More layers 
... 

#Loss 
loss = #some loss 

reg_variables = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES) 
reg_term = tf.contrib.layers.apply_regularization(regularizer, reg_variables) 
loss += reg_term 

अब जब कि tf.layers.conv2d साथ कैसे दिखाई देते हैं के साथ ?

धन्यवाद!

उत्तर

15

आप उन्हें tf.layers.conv2d as arguments:

regularizer = tf.contrib.layers.l2_regularizer(scale=0.1) 
layer2 = tf.layers.conv2d(
    inputs, 
    filters, 
    kernel_size, 
    kernel_regularizer=regularizer) 
+6

क्या मुझे अंतिम हानि परत में नियमितकर्ता जोड़ने की आवश्यकता है? 'Loss_new = loss_old + regularizer' – Tom

+0

@TYL की तरह आप इसे अंतिम हानि परत में जोड़ते हैं या नहीं? – thigi

+0

क्या आप अपना उत्तर थोड़ा सा विस्तारित कर सकते हैं? – thigi

4

में पारित कर सकते हैं अपने प्रश्न में जवाब नहीं है? आप tf.losses.get_regularization_loss (https://www.tensorflow.org/api_docs/python/tf/losses/get_regularization_loss) का भी उपयोग कर सकते हैं, जो सभी REGULARIZATION_LOSSES एकत्र करेगा।

... 
layer2 = tf.layers.conv2d(input, 
    filters, 
    kernel_size,       
    kernel_regularizer= tf.contrib.layers.l2_regularizer(scale=0.1)) 
... 
l2_loss = tf.losses.get_regularization_loss() 
loss += l2_loss 
संबंधित मुद्दे