美文网首页深度学习-推荐系统-CV-NLP
Tensorflow学习01:线性回归及可视化

Tensorflow学习01:线性回归及可视化

作者: 一脑两输出 | 来源:发表于2019-07-29 23:30 被阅读0次

【step0】

准备工作:构造数据集,y=x^2,并添加随机噪声

x=np.linspace(-1,1,100[:,np.newaxis]

noise=np.random.normal(0,0.1,size=x.shape

y=np.power(x,2)+noise

plt.scatter(x,y)

plt.show()

【step1】

定义输入:采用tf.placeholder

tf_x=tf.placeholder(tf.float32,x.shape)

tf_y=tf.placeholder(tf.float32,y.shape)

【step2】

定义学习参数:注意tf.layers.dense()函数参数组成,它默认初始化了全连接的权重w和偏置b,见kernel_initializer和bias_initializer

{

    inputs,

    units,  #每层的神经元个数

    activation=None,

    use_bias=True,

    kernel_initializer=None,  ##卷积核的初始化器

    bias_initializer=tf.zeros_initializer(),  ##偏置项的初始化器,默认初始化为0

......

}

l1=tf.layers.dense(tf_x,10,tf.nn.relu)

output=tf.layers.dense(l1,1)

【step3】

定义学习方法:学习目标是loss最小化,并采用gradient decent 优化器来优化求解过程

loss=tf.losses.mean_squared_error(tf_y,output)

optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.5)

train_op=optimizer.minimize(loss)

【step4】

初始化变量:tf.global_variables_initializer()会初始化先前定义的所有tf.Variable

sess = tf.Session()

otherssess.run(tf.global_variables_initializer())

graphplt.ion()

【step5】

训练模型:每迭代5次观察结果,并把网络的输出用线条来拟合

for step in range(100):

output _, l, pred = sess.run([train_op, loss, output], {tf_x: x, tf_y: y})

if step % 5 == 0:

plt.cla()

plt.scatter(x, y)

plt.plot(x, pred, 'r-', lw=5)

plt.text(0.5, 0, 'Loss=%.4f' % l, fontdict={'size': 20, 'color': 'red'})

plt.pause(0.1)

plt.ioff()

plt.show()

第1次迭代 第16次迭代

还是很有成就感的,哈哈哈~

源码在此:https://github.com/MorvanZhou/Tensorflow-Tutorial/blob/master/tutorial-contents/301_simple_regression.py

相关文章

网友评论

    本文标题:Tensorflow学习01:线性回归及可视化

    本文链接:https://www.haomeiwen.com/subject/eiqwrctx.html