关于深度学习之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安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...
随机推荐
- Python爬虫学习==>第五章:爬虫常用库的安装
学习目的: 爬虫有请求库(request.selenium).解析库.存储库(MongoDB.Redis).工具库,此节学习安装常用库的安装 正式步骤 Step1:urllib和re库 这两个库在安装 ...
- 【Python开发】Lambda表达式使用
lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...
- elastic mapping not_analyzed 简单理解 + analysis-ik分词器安装
1.索引index ,这个参数可以控制字段应该怎样建索引,怎样查询.它有以下三个可用值: not_analyzed:将字段的原始值放入索引中,作为一个独立的term,它是除string字段以外的所有字 ...
- NModbus4的使用
步骤1:打开串口 SerialPort port = new SerialPort("COM7") port.BaudRate = ; port.BaudRate = ; port ...
- 通过java 来实现对多个文件的内容合并到一个文件中
现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...
- redis缓存雪崩
缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效. 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中的放入了缓存,假设缓存一个小时.那么 ...
- FFmpeg4.0笔记:封装ffmpeg的解码功能类CDecode
Github https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff CDecode.h /********************** ...
- linux下安装php的lua扩展
1. 进入管理员权限使用yum安装 readline(也可以使用wget下载后./configure 然后 make && make install进行安装) yum install ...
- 第二章 单表查询 T-SQL语言基础(1)
单表查询(1) 本章:逻辑查询处理,特定的SELECT查询生成正确的结果集而要经历的一系列逻辑阶段;单表查询的其他方面,包括:运算符,空值(NULL),字符的处理和临时数据,分级(ranking),C ...
- render:h => h(App) ----render函数
转载其他博客1 new Vue({ 2 3 router, 4 store, 5 //components: { App } vue1.0的写法 6 render: h => h(App) vu ...