关于深度学习之TensorFlow简单实例
1.对TensorFlow的基本操作
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"]=""
a=tf.constant(2)
b=tf.constant(3)
with tf.Session() as sess:
print("a:%i" % sess.run(a),"b:%i" % sess.run(b))
print("Addition with constants: %i" % sess.run(a+b))
print("Multiplication with constant:%i" % sess.run(a*b)) a=tf.placeholder(tf.int16)
b=tf.placeholder(tf.int16)
add=tf.add(a,b)
mul=tf.multiply(a,b)
with tf.Session() as sess:
print("Addition with variables: %i" % sess.run(add,feed_dict={a:2,b:3}))
print("Multiplication with variables: %i" % sess.run(mul,feed_dict={a:2,b:3})) with tf.Session() as sess:
matrix1=tf.constant([[3.,3.]])
matrix2=tf.constant([[2.],[2.]])
product=tf.matmul(matrix1,matrix2)
result=sess.run(product)
print(result)
结果截图

2.线性回归操作
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import os
os.environ["CUDA_VISIBLE_DEVICES"]="" # 设置训练参数,learning_rate=0.01,training_epochs=1000,display_step=50。
#Parameters
learning_rate=0.01
training_epochs=1000
display_step=50 # 创建训练数据
#training Data
train_X=np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y=np.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples=train_X.shape[0] # 构造计算图,使用变量Variable构造变量X,Y
#tf Graph Input
X=tf.placeholder("float")
Y=tf.placeholder("float") # 设置模型的初始权重
#Set model weights
W=tf.Variable(np.random.randn(),name="weight")
b=tf.Variable(np.random.randn(),name='bias') # 构造线性回归模型
#Construct a linear model
pred=tf.add(tf.multiply(X,W),b) # 求损失函数,即均方差
#Mean squared error
cost=tf.reduce_sum(tf.pow(pred-Y,2))/(2*n_samples) # 使用梯度下降法求最小值,即最优解
# Gradient descent
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) # 初始化全部变量
#Initialize the variables
init =tf.global_variables_initializer() # 使用tf.Session()创建Session会话对象,会话封装了Tensorflow运行时的状态和控制。
#Start training
with tf.Session() as sess:
sess.run(init) # 调用会话对象sess的run方法,运行计算图,即开始训练模型。
#Fit all training data
for epoch in range(training_epochs):
for (x,y) in zip(train_X,train_Y):
sess.run(optimizer,feed_dict={X:x,Y:y})
#Display logs per epoch step
if (epoch+1) % display_step==0:
c=sess.run(cost,feed_dict={X:train_X,Y:train_Y})
print("Epoch:" ,'%04d' %(epoch+1),"cost=","{:.9f}".format(c),"W=",sess.run(W),"b=",sess.run(b))
print("Optimization Finished!") # 打印训练模型的代价函数。
training_cost=sess.run(cost,feed_dict={X:train_X,Y:train_Y})
print("Train cost=",training_cost,"W=",sess.run(W),"b=",sess.run(b)) # 可视化,展现线性模型的最终结果。
#Graphic display
plt.plot(train_X,train_Y,'ro',label='Original data')
plt.plot(train_X,sess.run(W)*train_X+sess.run(b),label="Fitting line")
plt.legend()
plt.show()
结果截图


3.逻辑回归
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets("/home/yxcx/tf_data",one_hot=True)
import os
os.environ["CUDA_VISIBLE_DEVICES"]="" #Parameters
learning_rate=0.01
training_epochs=25
batch_size=100
display_step=1 #tf Graph Input
x=tf.placeholder(tf.float32,[None,784])
y=tf.placeholder(tf.float32,[None,10]) #Set model weights
W=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10])) #Construct model
pred=tf.nn.softmax(tf.matmul(x,W)+b) #Minimize error using cross entropy
cost=tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred),reduction_indices=1)) #Gradient Descent
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Initialize the variables
init=tf.global_variables_initializer() #Start training
with tf.Session() as sess:
sess.run(init)
#Training cycle
for epoch in range(training_epochs):
avg_cost=0
total_batch=int(mnist.train.num_examples/batch_size)
# loop over all batches
for i in range(total_batch):
batch_xs,batch_ys=mnist.train.next_batch(batch_size)
#Fit training using batch data
_,c=sess.run([optimizer,cost],feed_dict={x:batch_xs,y:batch_ys}) #Conpute average loss
avg_cost+= c/total_batch
if (epoch+1) % display_step==0:
print("Epoch:",'%04d' % (epoch+1),"Cost:" ,"{:.09f}".format(avg_cost))
print("Optimization Finished!")
#Test model
correct_prediction=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
# Calculate accuracy for 3000 examples
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
print("Accuracy:",accuracy.eval({x:mnist.test.images[:3000],y:mnist.test.labels[:3000]}))
结果截图:

4.K邻近算法
import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import os
os.environ["CUDA_VISIBLE_DEVICES"]=""
mnist =input_data.read_data_sets("/home/yxcx/tf_data/MNIST_data",one_hot=True)
# mnist=input_data.read_data_sets("MNIST_data",one_hot=True,source_url='http://yann.lecun.com/exdb/mnist/')
Xtr,Ytr=mnist.train.next_batch(5000)
Xte,Yte=mnist.test.next_batch(200) #tf Graph Input
xtr=tf.placeholder("float",[None,784])
xte=tf.placeholder("float",[784])
distance =tf.reduce_sum(tf.abs(tf.add(xtr,tf.negative(xte))),reduction_indices=1)
pred=tf.argmin(distance,0)
accuracy=0
init=tf.global_variables_initializer()
#Start training
with tf.Session() as sess:
sess.run(init)
for i in range(len(Xte)):
#Get nearest nerighbor
nn_index=sess.run(pred,feed_dict={xtr:Xtr,xte:Xte[i,:]})
print("Test",i ,"Prediction:",np.argmax(Ytr[nn_index]),"True Class:",np.argmax(Yte[i]))
if np.argmax(Ytr[nn_index])==np.argmax(Yte[i]):
accuracy+=1./len(Xte)
print("Done!")
print("accuacy:" ,accuracy)
结果截图:

注:在3和4实验所使用数据集路径是不需要修改的,在运行程序时需要联网,会自动下载数据集。因为网络原因,可能会失败。如果失败后需多运行几次,就可以成功
对代码中用到的一些方法即参数进行记录:
1. x=tf.placeholder(dytype,shape,name)
三个参数含义为:
- dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
- shape:数据形状。默认是None,就是一维值,也可以是多维(比如[None,784]表示行位置,列为784)
- name:名称
2.tf.Variable(initializer,name)
参数含义为:
1.initializer表示初始化
2.name:名称
3.tf.zeros( shape, dtype=tf.float32, name=None )
参数含义:
1.第一个参数可以理解为数组,如代码中的tf.zeros([784,10]) 理解为784行10列
2.类型
3.名称
4.tf.nn.softmax()
含义:将向量归结为0-1之间,使特征更明显
5.reduce_mean(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None)
该方法用于计算张量的各个维度上的元素的平均值.
1.input_tensor:要减少的张量.应该有数字类型.
2.axis:要减小的尺寸.如果为None(默认),则减少所有维度.必须在[-rank(input_tensor), rank(input_tensor))范围内.
3.keep_dims:如果为true,则保留长度为1的缩小尺寸.
4.name:操作的名称(可选).
5.reduction_indices:axis的不支持使用的名称.
6.tf.train.GradientDescentOptimizer
自适应学习器
关于深度学习之TensorFlow简单实例的更多相关文章
- 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3
紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇
[原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- 深度学习调用TensorFlow、PyTorch等框架
深度学习调用TensorFlow.PyTorch等框架 一.开发目标目标 提供统一接口的库,它可以从C++和Python中的多个框架中运行深度学习模型.欧米诺使研究人员能够在自己选择的框架内轻松建立模 ...
- 深度学习之TensorFlow构建神经网络层
深度学习之TensorFlow构建神经网络层 基本法 深度神经网络是一个多层次的网络模型,包含了:输入层,隐藏层和输出层,其中隐藏层是最重要也是深度最多的,通过TensorFlow,python代码可 ...
- 深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装
一.硬件采购 近年来,人工智能AI越来越多被人们所了解,尤其是AlphaGo的人机围棋大战之后,机器学习的热潮也随之高涨.最近,公司采购了几批设备,通过深度学习(TensorFlow)来研究金融行业相 ...
- 截图:【炼数成金】深度学习框架Tensorflow学习与应用
创建图.启动图 Shift+Tab Tab 变量介绍: F etch Feed 简单的模型构造 :线性回归 MNIST数据集 Softmax函数 非线性回归神经网络 MINIST数据集分类器简单版 ...
- Ubuntu16.04搭建深度学习框架——TensorFlow
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库,说白了,就是一个库. 小编自己在Ubuntu搭建了深度学习框架TensorFlow,感觉挺简单,现 ...
- 深度学习之TensorFlow安装与初体验
深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...
随机推荐
- SpringCloud(一):SpringCould 框架预览
前言 SpringCloud是基于SpringBoot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管 ...
- /etc/passwd字段信息
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nol ...
- 【AMAD】django-model-utils -- Django model使用的mixin和utils
动机 简介 个人评分 动机 为django model系统提供一些可重用的mixin和utils. 简介 django-model-utils1为Django Model提供了下嘛几种分类的utils ...
- elk 概念整理 集群状态 - yellow - 面试的问题 -- 官方配置文档 水平扩容以及数据保障
1. primary shard -- raid0 2.replicas shard -- raid1 3.index -- 图书馆的借书指引 4.MySQL vs elasticsearch # ...
- 关于content的理解
Context字面意思上下文,位于framework packageandroid.content.Context中,其实该类为long型,类似Win32中的Handle句柄,很多方法需要通过 Con ...
- Java内存模型 (一)什么是进程?什么是线程?进程和线程之间的区别是什么?
什么是进程?什么是线程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程. 进程可以看成程序执行的一个实例.进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间.一个进程无法访问另一个进程 ...
- Java小知识----POI事件模式读取Excel 2007
一.知识背景 1.读取excel的方法选择问题 java中读excel中的时间,我们通常用POI去解析,在使用new HSSFWorkbook(NEW FileInputStream(excelFil ...
- Python使用pycharm导入pymysql
file->setting->project->project interperter,双击右侧出现的pip,弹出安装包,搜索pymysql->选择第一个->Instal ...
- HDU 4253-Two Famous Companies(二分+最小生成树)
Description In China, there are two companies offering the Internet service for the people from all ...
- 仿优酷项目—orm
仿优酷项目 一.ORM介绍 对象关系映射,把数据库中的表数据(表名.表记录.字段)全部映射到python中. mysql: python: 表名 ---->类名 记录 ----> ...