加正则前后计算量变化

2018-06-28  本文已影响0人  xyq_learn
N(0,1)
正太分布 高维样本的稀疏性问题
import tensorflow as tf
import numpy as np
W = tf.Variable([[1],[1]],dtype=tf.float32)
W
<tf.Variable 'Variable:0' shape=(2, 1) dtype=float32_ref>
x = tf.placeholder(tf.float32,shape=[None,2])
x
<tf.Tensor 'Placeholder:0' shape=(?, 2) dtype=float32>
y = tf.placeholder(tf.float32,shape=[None,1])
y
<tf.Tensor 'Placeholder_1:0' shape=(?, 1) dtype=float32>
loss = tf.losses.absolute_difference(y,tf.matmul(x,W))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train_step = optimizer.minimize(loss)

一条训练数据 ([1,0],0.5)

train_x = np.array([[1,0]],dtype=np.float32)
train_y = np.array([[.5]],dtype=np.float32)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(5):
        sess.run(train_step,feed_dict={x:train_x,y:train_y})
        W_res = sess.run(W)
        print(W_res)
        print('==================')
[[0.99]
 [1.  ]]
==================
[[0.98]
 [1.  ]]
==================
[[0.97]
 [1.  ]]
==================
[[0.96000004]
 [1.        ]]
==================
[[0.95000005]
 [1.        ]]
==================

加正则后

loss += tf.nn.l2_loss(W)
loss
<tf.Tensor 'add:0' shape=() dtype=float32>
optimizer = tf.train.GradientDescentOptimizer(0.01)
train_step = optimizer.minimize(loss)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(5):
        sess.run(train_step,feed_dict={x:train_x,y:train_y})
        W_res = sess.run(W)
        print(W_res)
        print('==================')
[[0.98]
 [0.99]]
==================
[[0.9602    ]
 [0.98010004]]
==================
[[0.940598  ]
 [0.97029907]]
==================
[[0.92119205]
 [0.9605961 ]]
==================
[[0.9019801 ]
 [0.95099014]]
==================
上一篇 下一篇

猜你喜欢

热点阅读