l1, l2 正規化 – 正規化項、誤差項

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び,l1 正則化を実装してください.

import tensorflow as tf
n_inputs = 28 * 28 # MNIST を想定
n_hidden1 = 300
n_outputs = 10

X = tf.placeholder(tf.float32, shape=(None, n_inputs), name=”X”)
y = tf.placeholder(tf.int32, shape=(None), name=”y”)

with tf.name_scope(“dnn”):
hidden1 = tf.layers.dense(X, n_hidden1, activation=tf.nn.relu, name=”hidden1″)
logits = tf.layers.dense(hidden1, n_outputs, name=”outputs”)

重みを設定
W1 = tf.get_default_graph().get_tensor_by_name(“hidden1/kernel:0”)
W2 = tf.get_default_graph().get_tensor_by_name(“outputs/kernel:0”)

l1 正則化のハイパーパラメータを設定
scale = 0.001

with tf.name_scope(“loss”):
#Q1:loss 関数としてクロスエントロピーを定義
xentropy = ##########
base_loss = tf.reduce_mean(xentropy, name=”avg_xentropy”)
reg_losses = tf.reduce_sum(tf.abs(W1)) + tf.reduce_sum(tf.abs(W2))
#Q2:base_loss に l1 正規化項を追加
loss = ##########

[Q1の選択肢]
1. tf.nn.cross_entropy(labels=y, logits=logits)
2. tf.nn.cross_entropy_with_logits(labels=y, logits=logits)
3. tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)

[Q2の選択肢]
1. tf.add(base_loss, scale * reg_losses, name=”loss”)
2. tf.add(base_loss, scale * base_loss, name=”loss”)
3. tf.loss_function(base_loss, scale * reg_losses, name=”loss”)

Leave a comment

Your email address will not be published. Required fields are marked *