基于Tensorflow的神经网络NN : 用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型。
基本概念
- 张量:张量就是多维数组(列表),用“阶”表示张量的维度,判断张量是几阶的,就通过张量右边的方括号数。
- 数据类型:float32 、int32
- 计算图(Graph): 搭建神经网络的计算过程,是承载一个或多个计算节点的一张图,只搭建网络,不运算。
x1、x2 表示输入,w1、w2 分别是 x1 到 y,x2 到 y 的权重,y=x1w1+x2w2。
- 会话( Session ): 执行计算图中的节点运算
#coding:utf-8
import tensorflow as tf #引入TensorFlow,简写为tf
x = tf.constant([[1.0, 2.0]]) # 如上图,1行2列数据
w = tf.constant([[3.0], [4.0]]) # 如上图,2行1列数据
y = tf.matmul(x, w) # xw矩阵乘法
print y # 打印结果
with tf.Session() as sess:
print sess.run(y) # 执行会话并打印出执行后的结果
y:Tensor(“matmul:0”,shape(1,1),dtype=float32),sess.run(y):[[11.]]
解析:张量名称:matmul:0 数组长度:1行1列 数据类型:浮点型
矩阵乘法:x*w 须满足 x的列=w的行;y行=x行,y列=w列;对应行列相乘
![]()
![]()
Linux配置
- Vim
vim ~/.vimrc 写入:
set ts=4 表示使 Tab 键等效为 4 个空格
set nu 表示使 vim 显示行号 nu 是 number 缩写
- 提示warning屏蔽
进入主目录下的 bashrc 文件,在bashrc 文件中加入这样一句
export TF_CPP_MIN_LOG_LEVEL=2
“0”(显示所有信息)或者”1”(不显示 info),”2”代表不显示 warning,”3”代表不显示 error。
神经网络参数
- 神经网络的参数: 是指神经元线上的权重w,用变量表示,一般会先随机生成这些参数 。
- 生成参数的方法是 让w等于tf.Variable ,把生成的方式写在括号里。
神经网络中常用的生成随机数/数组的函数
- tf.random_normal() 生成正态分布随机数
- tf.truncated_normal() 生成去掉过大偏离点的正态分布随机数
- tf.random_uniform() 生成均匀分布随机数
- tf.zeros 表示生成全 0 数组
- tf.ones 表示生成全 1 数组
- tf.fill 表示生成全定值数组
- tf.constant 表示生成直接给定值的数组
#coding:utf-8
import tensorflow as tf
w=tf.Variable(tf.random_normal([2,3],stddev=2, mean=0, seed=1))
# 生成正态分布随机数,2行3列,标准差=2,均值=0,随机种子=1
# truncated_normal也类似,如果随机出来的数据偏离平均值超过两个标准差,这个数据将重新生成
w=random_uniform(shape=7,minval=0,maxval=1,dtype=tf.int32,seed=1)
# 均匀分布[minval,maxval)随机采样,左闭右开
tf.zeros([3,2],int32) # 生成3行2列全 0 ,ones类似
tf.fill([3,2],6) # 生成3行2列全 6
随机种子如果去掉每次生成的随机数将不一致。
- 如果没有特殊要求标准差、均值、随机种子是可以不写的。