关于深度学习之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安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...
随机推荐
- mysql——修改表名、修改字段名、修改字段数据类型、增加字段、删除字段、修改字段排列位置、修改存储引擎、删除表 (示例)
一.创建表和插入数据: ), mz ), bz ) ); ,'sww','sww01'); ,'aww','aww02'); ,'qww','qww03'), (,'eww','eww04'), (, ...
- PTA(Basic Level)1027.打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行 ...
- Construct String from Binary Tree
You need to construct a string consists of parenthesis and integers from a binary tree with the preo ...
- 【Python】【demo实验1】【Python运行时强制刷新缓冲区,输出信息】(Python3 应不存在类似情况)
[原文] 需求:打印一颗 ”*” 休息1s 代码如下: #!/usr/bin/python #coding=utf-8 ''' 暂停1s输出 ''' import time def printStar ...
- ubuntu 18.04 配置notebook远程连接的坑
jupyter-notebook的安装不在此说明 在网上搜了很多方案都不行,好不容易从坑里爬出来 以下为远程连接配置方法 1.生成配置文件 jupyter notebook --generate-co ...
- 版本控制器之SVN(一)
通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解决代码冲突困难 容易引发BUG 难于追溯问题代码的修改人和修改时间 难 ...
- 01:gitbook使用
1.1 gitbook介绍 1.gitbook说明 GitBook 使用的markdown语法 在此基础上做了一些 写作便利性的加强 Markdown 是一种轻量级的「标记语言」,优点在于 专注你的文 ...
- linux常见的安装软件包命令
常用的 RPM 软件包命令 安装软件的命令格式 rpm -ivh filename.rpm 升级软件的命令格式 rpm -Uvh filename.rpm 卸载软件的命令格式 rpm -e filen ...
- vscode 插件 配置
第一页 第二页 第三页 settings.json配置 { "editor.fontSize": 20, "files.autoSave": "off ...
- Redis利用Pipeline加速查询速度的方法
1. RTT Redis 是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下 Redis 客户端执行一条命令分为如下四个过程: 发送命令 命令排队 命令执行 返回结果 客户 ...