バッチ正規化の実装

次のコードで空欄になっている行に入る適切なものを 1 ~ 3 からそれぞれ選び,
バッチ正規化によって DNN モデルを正規化してください.

import tensorflow as tf

n_inputs = 28 * 28
n_hidden1 = 300
n_hidden2 = 100
n_outputs = 10

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

train = tf.placeholder_with_default(False, shape=(), name=’training’)

hidden1 = tf.layers.dense(X, n_hidden1, name=”hidden1″)

# Q1:hidden1 をバッチ正規化してください.
bn1 = ##########

[Q1の選択肢]
1. tf.layers.batch_normalization(hidden1, training=train, momentum=0.9)
2. tf.layers.batchnormalization(hidden1, training=train, momentum=0.9)
3. tf.layers.batch_normalize(hidden1, training=x, momentum=0.9)

#Q2:ELU 活性化関数を使用してください.
bn1_act = ##########

hidden2 = tf.layers.dense(bn1_act, n_hidden2, name=”hidden2″)
bn2 = tf.layers.batch_normalization(hidden2, training=train, momentum=0.9)
bn2_act = tf.nn.elu(bn2)

logits_before_bn = tf.layers.dense(bn2_act, n_outputs, name=”outputs”)
logits = tf.layers.batch_normalization(logits_before_bn, training=train,
momentum=0.9)

[Q2の選択肢]
1. tf.keras.elu(hidden1)
2. tf.layers.elu(bn1)
3. tf.nn.elu(bn1)

オプティマイザとは

オプティマイザを説明している以下の文で空欄に入る適切な単語を選択肢 1 ~ 3 から選んでください.

DNN では層が深くなればなるほど、訓練に必要な時間は長くなる.
よって訓練効率を上げるためにも,モデルに対して重みの初期化や正規化などの処理が必要であったが,
( Q1 ___ ) 以外のオプティマイザを利用することで訓練時間をさらに削減できる.

1. 勾配効果法
2. ReLU 活性化関数
3. 平均 2 乗誤差

オプティマイザとは

オプティマイザを説明している以下の文で空欄に入る適切な単語を選択肢 1 ~ 3 から選んでください.

DNN では層が深くなればなるほど、訓練に必要な時間は長くなる.
よって訓練効率を上げるためにも,モデルに対して重みの初期化や正規化などの処理が必要であったが,
( Q1 ___ ) 以外のオプティマイザを利用することで訓練時間をさらに削減できる.

1. MSE
2. ELU
3. SGD

バッチ正規化のメリット、デメリット

バッチ正規化を説明している以下の文で正しいものを選択肢 1 ~ 3 から選んでください.

1. バッチ正規化を適応するとモデルの構造が単純となるため,とりあえずバッチ正規化を用いると良い.
2. バッチ正規化を適応するとモデルの構造は複雑となるため,プレーンな ELU や He 初期化を最初に試すと良い.
3. バッチ正規化を適応するとモデルの構造は複雑となるが,訓練は高速化されるためとりあえずバッチ正規化を用いると良い.

バッチ正規化のメリット、デメリット

バッチ正規化を説明している以下の文で正しいものを選択肢から選んでください.

1. バッチ正規化を適応するとモデルの構造は複雑となるため,プレーンな ELU や He 初期化を最初に試すと良い.
2. バッチ正規化を適応するとモデルの構造が単純となるため,とりあえずバッチ正規化を用いると良い.
3. バッチ正規化にはモデルの汎化性能を低下させるといった問題が存在する.
4. バッチ正規化は、活性化関数の後に用いると良い

バッチ正規化の実装

次のコードで空欄になっている行に入る適切なものを 1 ~ 3 からそれぞれ選び,
バッチ正規化によって DNN モデルを正規化してください.

import tensorflow as tf

n_inputs = 28 * 28
n_hidden1 = 300
n_hidden2 = 100
n_outputs = 10

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

train = tf.placeholder_with_default(False, shape=(), name=’training’)

hidden1 = tf.layers.dense(X, n_hidden1, name=”hidden1″)

# Q1:hidden1 をバッチ正規化してください.
bn1 = ##########

[Q1の選択肢]
1. tf.layers.batch_normalize(hidden1, training=x, momentum=0.9)
2. tf.layers.batchnormalization(hidden1, training=train, momentum=0.9)
3. tf.layers.batch_normalization(hidden1, training=train, momentum=0.9)

#Q2:ELU 活性化関数を使用してください.
bn1_act = ##########

hidden2 = tf.layers.dense(bn1_act, n_hidden2, name=”hidden2″)
bn2 = tf.layers.batch_normalization(hidden2, training=train, momentum=0.9)
bn2_act = tf.nn.elu(bn2)

logits_before_bn = tf.layers.dense(bn2_act, n_outputs, name=”outputs”)
logits = tf.layers.batch_normalization(logits_before_bn, training=train,
momentum=0.9)

[Q2の選択肢]
1. tf.layers.elu(bn1)
2. tf.nn.elu(bn1)
3. tf.keras.elu(hidden1)

バッチ正規化のメリット、デメリット

バッチ正規化を説明している以下の文で正しいものを選択肢から選んでください.

1. バッチ正規化を適応するとモデルの構造が単純となるため,とりあえずバッチ正規化を用いると良い.
2. バッチ正規化を適応するとモデルの構造は複雑となるため,プレーンな ELU や He 初期化を最初に試すと良い.
3. バッチ正規化を適応するとモデルの構造は複雑となるが,訓練は高速化されるためとりあえずバッチ正規化を用いると良い.
4. バッチ正規化にはモデルの汎化性能を低下させるといった問題が存在する.