Tensorflow框架人工智能实践笔记

基于TensorFlow的NN: 用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型。
张量(Tensor):多维数组(列表)
阶: 张量的维数

n阶 张量 名字及例子
0 标量,s=123
1 向量,v=[1,2,3]
2 矩阵,m=[[1,2,3],[4,5,6],[7,8,9]]
n 张量 ,t=[[[…n个

张量可以表示0阶到n阶数组(列表)

未来会常用vim编辑器,为了方便,我们先修改vim的配置文件:

vim ~/.vimrc写入:
set ts=4 使tab键等效为4个空格
set nu  使vim显示行号

TensorFlow的数据类型:tf.float32、tf.int32…

import tensorflow as tf  导入tensorflow模块
a = tf.constant([1.0,2.0])      定义常数
b=tf.constant([3.0,4.0])
result = a+b
print result

显示:

Tensor("add:0",shape=(2,),dtype=float32)
 表示:“节点名:第0个输出”,维度=一维数组长度为2,数据类型

结果截图:

在这里插入图片描述


计算图:(Graph)搭建神经网络的计算,只搭建,不运算(只描述运算过程)

在这里插入图片描述


y=XW=x1w1+x2w2

import tensorflow as tf
x = tf.constant([[1.0,2.0]])    两行一列
w=tf.constant([[3.0],[4.0]])    一行两列

y=tf.matmul(x,w)
print y

显示:

Tensor("matmul:0",shape(1,1),dtype=float32)  结果shape一行一列

结果截图:

在这里插入图片描述


以上得到的只是图,不是结果,如果想得到结果就要用到会话了。
会话:(Session)执行计算图中的节点运算。

with tf.Sessiion() as sess:
    print sess.run(y)     
   注:print前是四个空格

例如:

import tensorflow as tf
x = tf.constant([[1.0,2.0]])    两行一列
w=tf.constant([[3.0],[4.0]])    一行两列
y=tf.matmul(x,w)
print y
with tf.Session() as sess:
    print sess.run(y)   

结果截图:

在这里插入图片描述


若提示非程序的错误,可屏蔽,将TensorFlow的提示等级降低:

vim ~/.bashrc
进去后在尾部加上:   export TF_CPP_LOG_LEVEL=2
保存退出后:source ~/.bashrc   刚才的配置文件生效

**

前向传播

**
参数:线上权重,一般会先随机生成。

w=tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
              正态分布 产生2 * 3矩阵   标准差为2   均值为0  随机种子

随机种子如果去掉,每次生成的随机数就不一致。
后三项如果没有特殊要求可以省略。

tf.truncated_normal()   去掉过大偏离值的正态分布(如果随机出来的数据偏离平均值超过两个标准差将会被重新生成)
tf.random_uniform()   平均分布
也可生成常数:
tf.zeros 全0数组   tf.zeros([3,2],int32)生成[[0,0],[0,0],[0,0]]
tf.ones 全1数组   tf.ones([3,2],int32)生成[[1,1],1,1],1,1]]
tf.fill 全定值数组  tf.fill([3,2],6)生成[6,6],[6,6].[6,6]
tf.constant 直接给值      tf.constant([3,2,1])

神经网络的实现过程
1.准备数据集,提取特征,作为输入给神经网络。
2.搭建NN结构,从输入到输出(先搭建计算图,在用会话执行)
(NN前向传播算法–>计算输出)
3.大量特征数据给NN,迭代优化NN参数
(NN反向传播算法–>优化参数训练模型)
4.使用训练好的模型测试和分类

前向传播 :输入进网络得到输出。
X是输入为1 * 2 的矩阵

在这里插入图片描述


a是第一层计算结果。
变量初始化、计算图节点运算都要用会话(with结构)实现

with tf.Session() as sess:
    sess.run()

变量初始化:在sess.run函数中用tf.global_variables_initializer()

init_op = tf.gloabal_variables_initializer()
sess.run(init_op)

计算图节点运算:在sess.run函数中写入带运算的节点

sess.run(y)

用tf.placeholder占位,在sess.run函数中用feed_dict喂数据

喂一组数据
x = tf.placeholder(tf.float32,shape=(1,2))   两个输入特征
sess.run(y,feed_dict={x:[[0.5,0.6]]})

喂多组数据:
x = tf.placeholder(tf.float32,shape=(None,2))
sess.run(y,feed_dict={x:[[0.5,0.6],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})

举例
例1:

#coding:utf-8
#两层简单神经网络(全连接)
import tensorflow as tf

#定义输入和输出参数
x = tf.constant([[0.7,0.5]])
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#定义前向传播过程
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

#用会话计算结果
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    print"y in tf is:\n",sess.run(y)

结果截图:

在这里插入图片描述


例2:向神经网络喂入一组数据

#coding:utf-8
#两层简单神经网络(全连接)
import tensorflow as tf

#定义输入和输出参数
#用placeholder实现输入定义(sess.run中喂一组数据)
x = tf.placeholder(tf.float32,shape=(1,2))
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#定义前向传播过程
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

#用会话计算结果
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
       print"y in tf is:\n",sess.run(y,feed_dict={x:[[0.7,0.5]]})

结果截图:

在这里插入图片描述


例3:向神经网络喂入n组数据

#coding:utf-8
#两层简单神经网络(全连接)
import tensorflow as tf

#定义输入和输出参数
#用placeholder实现输入定义(sess.run中喂多组数据)
x = tf.placeholder(tf.float32,shape=(None,2))
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

#定义前向传播过程
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

#用会话计算结果
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    print"result is:\n",sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})
    print"w1:\n",sess.run(w1)
    print"w2:\n",sess.run(w2)

结果截图:

在这里插入图片描述

反向传播

反向传播 :训练模型参数,在所有参数上梯度下降,使NN模型在训练数据上的损失函数最小。
损失函数:(loss)预测值y与已知答案y_的差距

在这里插入图片描述

loss = tf.reduce_mean(tf.square(y_-y))

反向传播训练方法:以减小loss值为优化目标

train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
train_step = tf.train.MomentumOptimizer(learning_rate,momentum).minimize(loss)
train_step = tf.train.AdamOptimizer(learning_rate).minimize(loss)

学习率:决定每次更新的幅度,先选比较小的值
举例:

#coding:utf-8
#0导入模块,生成模拟数据集
#numpy模块是python的科学计算模块
#BATCH是一次喂入神经网络多少数据,不宜过大
import tensorflow  as tf
import numpy as np
BATCH_SIZE = 8
seed = 23455

#基于seed产生随机数
rng = np.random.RandomState(seed)
#随机数返回32行2列的矩阵,表示32组,每组两个特征,体积和重量作为输入数据集
X = rng.rand(32,2)
#从 X这个32行2列的矩阵中取出一行,判断如果和小于1,给Y赋值1,如果和不小于1,给Y赋值0
#作为输入数据集的标签(正确答案)
Y = [[int(x0 + x1 < 1)] for (x0,x1) in X]
print "X:\n",X
print "Y:\n",Y

#1定义神经网络的输入、参数和输出,定义前向传播过程
x = tf.placeholder(tf.float32,shape=(None,2))
y_ = tf.placeholder(tf.float32,shape=(None,1))

w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

a = tf.matmul(x,w1)
y = tf.matmul(a,w2)

#2定义损失函数及反向传播方法
#均方误差计算loss
loss = tf.reduce_mean(tf.square(y-y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
#train_step = tf.train.MomentumOptimizer(0.001,0.9).minimize(loss)
#train_step = tf.train.AdamOptimizer(0.001).minimize(loss)

#3生成会话,训练STEPS轮
with tf.Session() as sess:
     init_op = tf.global_variables_initializer()
     sess.run(init_op)
     #输出目前(未经训练)的参数取值
     print "w1:\n",sess.run(w1)
     print "w2:\n",sess.run(w2)
     print "\n"
     #训练模型
     STEPS = 3000
     for i in range(STEPS):
         start = (i * BATCH_SIZE) % 32
         end = start + BATCH_SIZE
         sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})
         if i % 500 == 0:
             total_loss = sess.run(loss,feed_dict={x:X,y_:Y})
             print("After %d training steps,loss on all data is %g" % (i,total_loss))
     #输出训练后的权重
     print "\n"
     print "w1:\n",sess.run(w1)
     print "w2:\n",sess.run(w2)

结果截图:

在这里插入图片描述


在这里插入图片描述

搭建神经网络八股:准备、前传、反传、迭代
0、准备:import
常量定义
生成数据集
1、前向传播:定义输入、参数和输出

x=
y_=
w1=
w2=
a=
y=

2、反向传播:定义损失函数、反向传播方法

loss=
train_step=

3、生成会话,训练STEPS轮

with tf.Session() as sess:
     init_op = tf.global_variables_initializer()
     sess.run(init_op)
     STEPS = 3000
     for i in range(STEPS):
         start = 
         end = 
         sess.run(train_step,feed_dict:)

原文地址:https://blog.csdn.net/qq_43211132/article/details/89532157

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


MNIST数据集可以说是深度学习的入门,但是使用模型预测单张MNIST图片得到数字识别结果的文章不多,所以本人查找资料,把代码写下,希望可以帮到大家~1#BudingyourfirstimageclassificationmodelwithMNISTdataset2importtensorflowastf3importnumpyasnp4impor
1、新建tensorflow环境(1)打开anacondaprompt,输入命令行condacreate-ntensorflowpython=3.6注意:尽量不要更起名字,不然环境容易出错在选择是否安装时输入“y”(即为“yes”)。其中tensorflow为新建的虚拟环境名称,可以按喜好自由选择。python=3.6为指定python版本为3
这篇文章主要介绍“张量tensor是什么”,在日常操作中,相信很多人在张量tensor是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
tensorflow中model.fit()用法model.fit()方法用于执行训练过程model.fit(训练集的输入特征,训练集的标签,batch_size,#每一个batch的大小epochs,#迭代次数validation_data=(测试集的输入特征,
https://blog.csdn.net/To_be_little/article/details/124438800 目录1、查看GPU的数量2、设置GPU加速3、单GPU模拟多GPU环境1、查看GPU的数量importtensorflowastf#查看gpu和cpu的数量gpus=tf.config.experimental.list_physical_devices(device_type='GPU')cpus=tf.c
根据身高推测体重const$=require('jquery');consttf=require('@tensorflowfjs');consttfvis=require('@tensorflowfjs-vis');/*根据身高推测体重*///把数据处理成符合模型要求的格式functiongetData(){//学习数据constheights=[150,151,160,161,16
#!/usr/bin/envpython2#-*-coding:utf-8-*-"""CreatedonThuSep610:16:372018@author:myhaspl@email:myhaspl@myhaspl.com二分法求解一元多次方程"""importtensorflowastfdeff(x):y=pow(x,3)*3+pow(x,2)*2-19return
 继续上篇的pyspark集成后,我们再来看看当今热的不得了的tensorflow是如何继承进pycharm环境的参考:http://blog.csdn.net/include1224/article/details/53452824思路其实很简单,说下要点吧1.python必须要3.564位版本(上一篇直接装的是64位版本的Anaconda)2.激活3.5版本的
首先要下载python3.6:https://www.python.org/downloadselease/python-361/接着下载:numpy-1.13.0-cp36-none-win_amd64.whl 安装这两个:安装python3.6成功,接着安装numpy.接着安装tensorflow: 最后测试一下: python3.6+tensorflow安装完毕,高深的AI就等着你去
参考书《TensorFlow:实战Google深度学习框架》(第2版)以下TensorFlow程序完成了从图像片段截取,到图像大小调整再到图像翻转及色彩调整的整个图像预处理过程。#!/usr/bin/envpython#-*-coding:UTF-8-*-#coding=utf-8"""@author:LiTian@contact:694317828@qq.com
参考:TensorFlow在windows上安装与简单示例写在开头:刚开始安装的时候,由于自己的Python版本是3.7,安装了好几次都失败了,后来发现原来是tensorflow不支持3.7版本的python,所以后来换成了Python3.6,就成功了。。。。。anconda:5.3.2python版本:3.6.8tensorflow版本:1.12.0安装Anconda
实验介绍数据采用CriteoDisplayAds。这个数据一共11G,有13个integerfeatures,26个categoricalfeatures。Spark由于数据比较大,且只在一个txt文件,处理前用split-l400000train.txt对数据进行切分。连续型数据利用log进行变换,因为从实时训练的角度上来判断,一般的标准化方式,
 1)登录需要一个 invitationcode,申请完等邮件吧,大概要3-5个小时;2)界面3)配置数据集,在右边列设置 
模型文件的保存tensorflow将模型保持到本地会生成4个文件:meta文件:保存了网络的图结构,包含变量、op、集合等信息ckpt文件:二进制文件,保存了网络中所有权重、偏置等变量数值,分为两个文件,一个是.data-00000-of-00001文件,一个是.index文件checkpoint文件:文本文件,记录了最新保持
原文地址:https://blog.csdn.net/jesmine_gu/article/details/81093686这里只是做个收藏,防止原链接失效importosimportnumpyasnpfromPILimportImageimporttensorflowastfimportmatplotlib.pyplotaspltangry=[]label_angry=[]disgusted=[]label_d
 首先声明参考博客:https://blog.csdn.net/beyond_xnsx/article/details/79771690?tdsourcetag=s_pcqq_aiomsg实践过程主线参考这篇博客,相应地方进行了变通。接下来记载我的实践过程。  一、GPU版的TensorFlow的安装准备工作:笔者电脑是Windows10企业版操作系统,在这之前已
1.tensorflow安装  进入AnacondaPrompt(windows10下按windows键可找到)a.切换到创建好的tensorflow36环境下:activatetensorflow36    b.安装tensorflow:pipinstlltensorflow    c.测试环境是否安装好       看到已经打印出了"h
必须走如下步骤:sess=tf.Session()sess.run(result)sess.close()才能执行运算。Withtf.Session()assess:Sess.run()通过会话计算结果:withsess.as_default():print(result.eval())表示输出result的值生成一个权重矩阵:tf.Variable(tf.random_normal([2,3]
tf.zeros函数tf.zeros(shape,dtype=tf.float32,name=None)定义在:tensorflow/python/ops/array_ops.py.创建一个所有元素都设置为零的张量. 该操作返回一个带有形状shape的类型为dtype张量,并且所有元素都设为零.例如:tf.zeros([3,4],tf.int32)#[[0,0,
一、Tensorflow基本概念1、使用图(graphs)来表示计算任务,用于搭建神经网络的计算过程,但其只搭建网络,不计算2、在被称之为会话(Session)的上下文(context)中执行图3、使用张量(tensor)表示数据,用“阶”表示张量的维度。关于这一点需要展开一下       0阶张量称