机器学习笔记二十三 TensorFlow

来源:互联网 发布:软件企业资质 编辑:程序博客网 时间:2024/06/05 04:13

一、简介

2015 年 11 月,谷歌发布TensorFlow,已经在图像识别、语音识别、自然语言处理、数据挖掘和预测等 AI 场景中得到了十分广泛的应用。

Tensorflow的特性

  • 高度的灵活性:Tensorflow并不是一个严格的神经网络库,只要计算可以表示为一个数据流图,就可以使用Tensorflow。
  • 可移植性(Portability)
  • 多语言支持
  • 性能最优化

二、安装

pip install tensorflow

手工下载安装
http://www.lfd.uci.edu/~gohlke/pythonlibs/#tensorflow
下载whl文件后进行安装。

pip install ***.whl

windows下载需要安装protobuf-3.3.0-py3-none-any.whl。

三、 试验代码

第一个程序

import tensorflow as tfhello = tf.constant('Hello world')session = tf.Session()print(sess.run(hello))

启动一个graph

import tensorflow as tfa = tf.constant(2)b = tf.constant(3)with tf.Session() as sess:    print ("a=2,b=3")    print(Addtion with constants:%i"% sess.run(a+b))    print("Multiplication with constants:%i"%sess.run(a*b))

tensorflow里基本的数据结构是tensor结果。

import numpy as npimprt tensorflow as tfimport matplotlib.pyplot as plta = 3w = tf.Variable([[0.5,1.0]])x = tf.Variable([[2.0],[1.0]])y=tf.matmul(w,x) #乘法操作init_op = tf.global_variables_initializer()with tf.Session() as sess:    sess.run(init_op)    print(y.eval())

要通过session来对数据进行操作。

四、基本概念

  • 图(Graph):图描述了计算的过程,Tensor使用图来表示计算任务
  • 张量(Tensor):TensorFlow使示tensor表示数据,每个tensor是一个类型化的多维数组。
  • 计算(op):图中的节点被称为op(operation的缩写),一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor。
  • 会话(Session):图必须在称之为“会话”的上下文中执行。会话将图的op分发到GPU之类的设备上执行。
  • 变量(Variable):运行过程中可以被改变,用于维护状态。
  • -

计算图

import numpy as npa = np.zeros((3,3))nbarray转换为tensor支持的格式 。

placeholder

input1 = tf.placeholder(tf.float32)input2 = tf.plcaeholder(tf.float32)output = tf.mul(input1,input2)with tf.Session() as sess:    print(sess.run([out[ut], feed_dict={input1:[7.],input2:[2.])))

placeholder定义时没有值,使用时赋值。
[array( 14.],dtype=float32)]

回归操作
这里写图片描述

这里写图片描述

import numpy as npimport tensorflow as tfimport matplotlib.pyplot as pltnum_points = 1000vectors_set =[]for i in range(num_points):    x1 = np.randowm.normal(0.0,0.55)    y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0,0.03)    vector_set.append([x1,y1]) #高斯初始化一些点x_data = [v[0] for v in vectors_set]y_data = [v[1] for v in vectors_set]plt.scatter#生成1维的W矩阵,取值是[-1,1]之间的随机数w=tf.Variable(tf.random_uniform([1],-1.0,1.0),name='w')# 生成1维的b矩阵,初始值0b = tf.Variable(tf.zeros([1]),name='b')#经过计算得出预估值y = W * x_data + b# 以预估值y和实际值y_data之间的无均方误差作为操作loss = tf.reduce_mean(tf.square(y - y_data),name='loss')# 采用梯度下降法来优化参数optimizer = tf.train.GradientDescentOptimizer(0.5)# 主教练的过程就是最小化这个误差值train = optimizer.minimize(loss,name='train')sess=tf.Session()init=tf.global_variables_initializer()sess.run(init)# 初始化的W和b是多少print("W=",sess.run(W),"b=",sess.run(b),"loss=",session.run(loss))# 执行20次训练for step in range(20):    sess.run(train) # 执行迭代    #输出训练好的w和b    print("W=",sess.run(W),"b=",session.run(b),"loss=",sess.run(loss)) writer=tf.train.SummaryWriter("./tmp",sess.graph)

这里写图片描述

plt.scatter(x_data,y_data,c='r')plt.plot(x_data,sess.run(W)*x_data+sess.run(b))plt.show()
原创粉丝点击