我正在使用TensorFlow建立一个神经网络,并且我试图对权重矩阵中的负值实施二次惩罚,即P(W [i,j])= W [i,j ] ^ 2如果W [i,j]< 0.
总之,我初始化了权重,执行了一些操作,定义了最小化的主要目标函数,并将此非负性惩罚定义如下:
self.W = tf.Variable(tf.random_uniform((input_dim, hidden_dim), minval=-k, maxval=k, dtype=np.float32), dtype=tf.float32)
objective = ...
nonnegativity = tf.nn.l2_loss(tf.nn.relu(tf.negative(self.W)))
loss = objective + 0.01*nonnegativity
self.train_op = tf.train.AdamOptimizer(0.1).minimize(loss)
我想知道这是否是实施此类惩罚的正确方法。