tensorflow初学者教程第一课

TensorFlow教程第一课

适用于初学者

第一节对TensorFlow进行一个操作op

import tensorflow as tf
#传建一个常量op
m1=tf.constant([[3,3]])
#创建一个常量op
m2=tf.constant([[2],[3]])
#创建一个矩阵乘法op,把m1,m2传入
product=tf.matmul(m1,m2)
print(product)#此时不会显示出product乘积的结果这就是TensorFlowsession的作用
#定义一个会话,启动默认图
sess=tf.Session()
#调用session的run方法来执行矩阵乘法op
result=sess.run(product)
print(result)
sess.close
'利用下面代码代替上边的session的op过程因为with...中自带关闭功能
with tf.Session() as sess:
    #调用session的run方法来执行矩阵乘法op
    result=sess.run(product)
    print(result)

第二节tensorflow中对变量的介绍

import tensorflow as tf
#定义一个变量和常量
x=tf.Variable([1,2])
a=tf.constant([3,3])
#增加一个减法op
sub=tf.subtract(x,a)
#增加一个加法op
add=tf.add(x,sub)
#进行初始化
init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(sub))
    print(sess.run(add))
#创建一个变量初始化为0
state=tf.Variable(0,name='counter')
#创建一个op作用是使state加1
new_value=tf.add(state,1)
#赋值op,把后面值赋给前面值,即将new_value给了state
update=tf.assign(state,new_value)
#因为使用到变量所以这里需要初始化
init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(state))
    for _ in range(5):
        sess.run(update)
        print(sess.run(state))

第三节TensorFlow中的fetch and feed

import tensorflow as tf
'''
#fetch多个op得到运行结果
input1=tf.constant(3.0)
input2=tf.constant(2.0)
input3=tf.constant(5.0)

add=tf.add(input2,input3)
mul=tf.multiply(input1,add)

with tf.Session() as sess:
    result=sess.run([mul,add])
    print(result)
'''
#feed
#创建占位符
input1=tf.placeholder(tf.float32)
input2=tf.placeholder(tf.float32)
output=tf.multiply(input1,input2)
with tf.Session() as sess:
    #feed的数据以字典形式传入
    print(sess.run(output,feed_dict={input1:[7],input2:[2]}))

第四节tensorflow的简单实例,一个线性回归的模型

import tensorflow as tf
import numpy as np

#产生一百个随机点
x_data=np.random.rand(100)
y_data=x_data*0.1+0.2
#构造一个线性模型
b=tf.Variable(0.)
k=tf.Variable(0.)
y=k*x_data+b

#二次代价函数
loss=tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降发进行训练的优化器学习率0.2
optimizer=tf.train.GradientDescentOptimizer(0.2)
#最小化代价函数
train=optimizer.minimize(loss)

#变量初始化
init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for step in range(201):#训练201次
        sess.run(train)
        if step%20==0:#每20次打印一次
            print(step,sess.run([k,b]))

#简单的用TensorFlow搭建的神经网络应用于回归中
import tensorflow as tf#导出一些库模块
import numpy as np
import matplotlib.pyplot as plt

#产生数据即对这些训练数据进行输入神经网络对其做回归
#使用numpy生成300个随机点      三百行一列
x_data=np.linspace(-0.5,0.5,300)[:,np.newaxis]
noise=np.random.normal(0,0.02,x_data.shape)#生成一些随机值形状与x_data一样
y_data=np.square(x_data)+noise#会得到大致一个U的图像

#定义两个placeholder
x=tf.placeholder(tf.float32,[None,1])#一列,行不确定
y=tf.placeholder(tf.float32,[None,1])

#定义一个神经网络中间层
#输入一个神经元输出一个神经元,中间层10个
#权值
Weights_l1=tf.Variable(tf.random_normal([1,10]))#一行十列
biases_l1=tf.Variable(tf.zeros([1,10]))
Wx_plus_b_l1=tf.matmul(x,Weights_l1)+biases_l1
l1=tf.nn.tanh(Wx_plus_b_l1)
#定义输出层
Weights_l2=tf.Variable(tf.random_normal([10,1]))
biases_l2=tf.Variable(tf.zeros([1,1]))
Wx_plus_b_l2=tf.matmul(l1,Weights_l2)+biases_l2
prediction=tf.nn.tanh(Wx_plus_b_l2)

#二次代价函数
loss=tf.reduce_mean(tf.square(y-prediction))
#定义一个梯度下降发进行训练的优化器学习率0.2
optimizer=tf.train.GradientDescentOptimizer(0.1)
#最小化代价函数
train_step=optimizer.minimize(loss)
init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for _ in range(2000):
        sess.run(train_step,feed_dict={x:x_data,y:y_data})
    #获取预测值
    prediction_value=sess.run(prediction,feed_dict={x:x_data})
    #画图
    plt.figure()
    plt.scatter(x_data,y_data)
    plt.plot(x_data,prediction_value,'r-',lw=5)
    plt.show()

#最终简单的神经网络回归就构成了,其图像散点图及拟合图如下所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40123108/article/details/83146605