0
点赞
收藏
分享

微信扫一扫

机器学习笔记二十三 TensorFlow

一、简介

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 tf
hello = tf.constant('Hello world')
session = tf.Session()
print(sess.run(hello))

启动一个graph

import tensorflow as tf
a = 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 np
imprt tensorflow as tf
import matplotlib.pyplot as plt

a = 3
w = 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 np
a = 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)]

回归操作
机器学习笔记二十三 TensorFlow_自然语言处理

机器学习笔记二十三 TensorFlow_神经网络_02

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

num_points = 1000
vectors_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矩阵,初始值0
b = 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)

机器学习笔记二十三 TensorFlow_tensorflow_03

plt.scatter(x_data,y_data,c='r')
plt.plot(x_data,sess.run(W)*x_data+sess.run(b))
plt.show()

下面链接是TensorFlow栏目介绍其更详细应用。​


举报

相关推荐

0 条评论