TensorFlow基础

1. tensor张量, graph图, session会话

1.1 tensor张量

定义:多维数组(阶=维数)

维数/ 阶类别实例
0标量m = 1
1向量m = [1, 2]
2矩阵m = [[1, 2], [3, 4]]
n张量m = [[[…

1.2 graph图

定义:搭建神经网络的计算过程,只搭建,不运算
比如,对于 y = x W = x 1 ∗ w 1 + x 2 ∗ w 1 y = xW = x1 * w1 + x2 * w1 y=xW=x1w1+x2w1
搭建的计算图:

w1
w2
X1
y
X2

如果print y, 输出的结果为张量的属性,而非计算结果!

Tensor(“matmul:0”,shape(1,),dtype=float32)
属性含义分别是:“节点名:第0个输出“,张量的维度(此处为一维标量),数据类型

1.3 session会话

定义:执行计算图中的节点运算
语法:

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

使用会话进行节点运算之后,就可以print出每一个节点具体的计算数值。

2. 前向传播

2.1 变量初始化

w = tf.variable(method) // 对于权重,偏置等参数的初始化
x = tf.placeholder(data_type, shape) // 对于输入数据的初始化,见2.2章节
  1. 随机方法
    常见的随机数获取方法有如下几种
    ·tf.random_normal(shape, stddev, mean, seed) 正态分布
    设置随机数种子seed,则每一次获取随机数相同;否则不同
    · tf.random_uniform(shape) 平均分布
    · tf.truncated_normal(shape) 去掉偏离中心过大点的正态分布
  2. 定值方法
    ·tf.zeros(shape, data_type) 全0
    · tf.ones(shape, data_type) 全1
    · tf.fill(shape, constant) 全定值数组
    用constant填充张量 e.g. tf.fill([1,2],4) 生成 [[4],[4]]
    · tf.constant(tensor) 直接给值
  • 权重矩阵W的维度确定
    如果y = tf.matmul(x, W)
    W s h a p e = ( 前 节 点 个 数 , 后 节 点 个 数 ) W_{shape} = (前节点个数,后节点个数) Wshape=()

  • 以上初始化定义后,要在会话中标明“运行初始化”,才可以起效果。

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

2.2 传入训练数据

在搭建好神经网络后,要把真实的训练数据传入网络。对于批量喂入数据,可以先用tf.placeholder占位,目的是规定 1. 输入多少组数据;2. 训练数据的特征维度。 再喂入真实数据集,得到输出。

x = tf.placeholder(data_type,shape=(None,2))
sess.run(y, feed_dict)

其中,shape的第一个参数为数据组数,如果喂入多组数据,那么用None表示;第二个参数为特征维度,比如一个人有性格和年龄两个特征。

3. 反向传播

反向传播的目的是使模型在训练数据上达到损失函数(loss function)最小。

  1. 损失函数
    定义:衡量预测值与真实值之间的差距
    常见衡量方式:
    · 均方误差MSE
// y_ : 真实值; y: 预测值
loss = tf.reduce_mean(tf.square(y_ - y))

· 交叉熵 cross entropy
定义:表示两个概率分布之间的距离。交叉熵越大,概率分布越远;越小,概率分布越近。
H ( y ′ , y ) = − ∑ y ′ ∗ l o g y H(y', y) = -\sum{y' * logy} H(y,y)=ylogy
其中,y’ 为真实值,y为预测值。

为了保证预测结果满足概率分布,即 ∀ x   P ( X = x ) ∈ [ 0 , 1 ]   a n d   ∑ P ( X = x ) = 1 \forall x \space P(X=x)\in[0,1] \space and \space \sum{P(X=x)} = 1 x P(X=x)[0,1] and P(X=x)=1
,可以用softmax函数处理分类输出。

ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argsmax(y_,1))
cem = tf.reduce_mean(ce)
  1. 反向传播方法(优化算法)
    语法:
// 方法1 : 梯度下降
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss) 
// 方法2 : 动量算法(使梯度下降更加平稳)
train_step = tf.train.MomentumOptimizer(learning_rate, momentum).minimize(loss) 
// 方法3 : Adam (参数比较平稳)
train_step = tf.train.AdamOptimizer(learning_rate).minimize(loss) 

4. 优化过程

4.1 学习率

常见的学习率更新方式:指数衰减 exponential decay
L e a r n i n g _ r a t e = i n i t i a l _ l e a r n i n g _ r a t e ∗ l e a r n i n g _ r a t e _ d e c a y g l o b a l _ s t e p l e a r n i n g _ r a t e _ s t e p Learning\_rate = initial\_learning\_rate * learning\_rate\_decay^{\frac{global\_step}{learning\_rate\_step}} Learning_rate=initial_learning_ratelearning_rate_decaylearning_rate_stepglobal_step
其中,global_step表示运行了几轮batch_size, learning_rate_step表示多少轮更新一次学习率,一般为( 总样本数/batch_size).

语法:

global_step = tf.variable(0,trainable=false)
learning_rate = tf.train.exponential_decay(initial_learning_rate, global_step, learning_rate_step, learning_rate_decay,staircase)

4.2 正则化

正则化在损失函数中引入模型复杂度指标,一般给权重W加权,弱化了训练数据的噪声,防止模型过拟合数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tensorflow是一个开源的机器学习框架,由Google开发。它被广泛应用于深度学习、神经网络和其他机器学习算法的开发和部署。 以下是Tensorflow基础训练的步骤: 1. 安装Tensorflow Tensorflow可以通过pip命令安装。在命令行中输入以下命令即可: pip install tensorflow 2. 创建Tensorflow图 在Tensorflow中,图是指一系列的操作。创建图的第一步是创建一个空白的图,然后向其中添加操作。在Tensorflow中,所有的操作都是节点,它们可以接受输入并产生输出。以下是创建一个简单的图的示例: import tensorflow as tf # 创建一个空白的图 graph = tf.Graph() # 向图中添加节点 with graph.as_default(): a = tf.constant(5) b = tf.constant(2) c = tf.add(a, b) 3. 运行Tensorflow图 在Tensorflow中,我们需要创建一个会话来运行图。会话是Tensorflow中用于执行图的对象。我们可以使用会话执行图中的操作,并获取它们的输出。以下是运行上面创建的图的示例: import tensorflow as tf # 创建一个图 graph = tf.Graph() # 向图中添加节点 with graph.as_default(): a = tf.constant(5) b = tf.constant(2) c = tf.add(a, b) # 创建一个会话 with tf.Session(graph=graph) as session: # 运行图中的操作 result = session.run(c) print(result) 输出结果为: 7 4. 使用Tensorflow变量 在Tensorflow中,变量是指可以在图中持久化存储的值。我们可以使用变量来存储模型的参数。以下是创建和使用Tensorflow变量的示例: import tensorflow as tf # 创建一个变量 x = tf.Variable(0, name='counter') # 创建一个操作 increment_op = tf.assign(x, x+1) # 创建一个会话 with tf.Session() as session: # 初始化变量 session.run(tf.global_variables_initializer()) # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) 输出结果为: 1 2 3 5. 保存和加载Tensorflow模型 在Tensorflow中,我们可以使用Saver对象将模型保存到磁盘上,并在需要时加载它们。以下是保存和加载Tensorflow模型的示例: import tensorflow as tf # 创建一个变量 x = tf.Variable(0, name='counter') # 创建一个操作 increment_op = tf.assign(x, x+1) # 创建一个Saver对象 saver = tf.train.Saver() # 创建一个会话 with tf.Session() as session: # 初始化变量 session.run(tf.global_variables_initializer()) # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) # 保存模型 saver.save(session, 'my-model') # 加载模型 with tf.Session() as session: # 加载模型 saver.restore(session, 'my-model') # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) 输出结果为: 1 2 3 4 5 6 以上就是Tensorflow基础训练的步骤。Tensorflow是一个非常强大的机器学习框架,它提供了丰富的工具和函数库,可以帮助我们开发和部署各种机器学习模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值