tensorflow的一些总结、LSTM图像分类实现

最近论文需要用到深度学习,发现一年没用过的tensorflow,基本上都忘了。这篇文章是北大软微曹健老师的视频笔记

基础

在tensorflow中,用张量表示数据,用计算图搭建神网络,用会话(session)执行计算图,优化线上的权重,得到模型。
张量: n维数组,0阶是标亮、1阶是向量、2阶是矩阵、n阶就是张量了
计算图: 搭建神经网络的计算过程,只搭
看一个最简单的计算图:

import tensorflow as tf
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)

这里可以看出来,计算图只描述计算过程,不计算运算结果

会话: 如果要得到计算图的计算结果,就需要使用会话

with tf.session() as sess:
	print(sess.run(result))

参数
Variable表示 tensorflow 中的变量,线上的权重W,用变量表示,随机给初值

# random_normal表示生成标准正太分布的矩阵,其他可选的还有 truncated_normal() ->去掉过大偏离点的正态分布 random_uniform ->平均分布
# [2,3]表示矩阵为两行三列的矩阵
# stddev表示矩阵的标准差为2
# mean表示均值为0
# seed是随机种子,如果不设置,每次生成的随机数会不一样
w = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))

tf.zeros([3,2], int32) #三行两列的全0数组
tf.ones([3,2], int32) #三行两列的全1数组
tf.fill([3,2],6) #三行两列,数组值全是6
tf.constant([3,2,1]) #直接生成[3,2,1] tensorflow中运算,就需要使用tensorflow的数据格式

占位符
在神经网络的训练中输入参数可能有多组,用placeholder来接收输入参数x

x = tf.placeholder(tf.float32, shape(1,2)) #生成一个一行两列的占位符

全局参数初始化
Variable生成的过程,只是指定了初始化的方式,由于计算图本身不进行任何运算,因此并没有真正初始化,如果要初始化就需要使用下面的方式:

with tf.Session() as sess:
	init_op = tf.global_variables_initializer()
	sess.run(init_op)
一个简单训练的实现过程

神经网络的实现过程大致可以分为以下几步:

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

下面看一个简单的例子:

import tensorflow as tf
import numpy as np
BATCH_SIZE = 8
seed = 23455

# 准备数据集
rng = np.random.RandomState(seed)
X = rng.rand(32, 2) #产生32行2列的随机矩阵
Y = [[int(x0+x1<1)] for (x0,x1) in X]
print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值