TensorFlow笔记

Tensorflow

搭建神经网络

  • 用张量表示数据

  • 用计算图搭建神经网络

  • 用绘画执行计算图,优化线上的权重

张量(tensor): 多维数组(列表)

维数名字例子
00标量 scalar单个数字 s=1,2,3
11向量 vectorv=[1,2,3]
22矩阵 matrixm=[[1,2,3],[4,5,6],[7,8,9]]
33张量 tensort=[[[… (几个括号是几阶)

数据类型

tf.float32

tf.int32

计算图

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

搭建神经网络

  • 前向传播:定义输入、参数和输出

    x =

    y_ =

    w1 =

    w2 =

    a =

    y =

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

    loss =

    train_step =

  • 生成会话,训练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=)
    

神经网络的优化

学习率设置多少合适

学习率大了振荡不收敛,学习率小了收敛速度慢

  • 指数衰减学习率

    global_step = tf.Variable(0,trainable=False)
    learning_rate = tf.train.exponential_decay(
        LEARNING_RATE_BASE,#最开始的学习率
        gloabal_step,#当前运行到第几轮的计数器
        LEARNING_RATE_STEP,#学习率多少轮更新一次
        #一般设定为 数据集总样本数/每次喂入多少数据
        LEARNING_RATE_DECAY,#学习衰减率(0,1)
        staircase=True#取整  学习率阶梯型衰减
    )
    
    

搭建模块化的神经网络八股:

#前向传播就是搭建网络,设计网络结构forward.py
def foward(x,regularizer):
    w = 
    b = 
    y = 
    return y
def get_weight(shape,regularizer):
    w = tf.Variable() #给w赋初值
    tf.add_to_collection('losses',tf.contrib.layer.l2_regularizer(regularizer)(w))
    return w

def get_bias(shape):
    b = tf.Variable()
    return b
#反向传播就是训练网络,优化网络参数 backward.py
def backward():
    x = tf.placeholder()
    y_ = tf.placeholder()
    y = forward.forward(x,REGULARIZER)
    global_step = tf.Variable(0,trainable=False)
    loss = 
    '''
    loss可以是y与y_的差距
    loss_mse = tf.reduce_mean(tf.square(y-y_))
    也可以是 交叉熵
    ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))
    cem = tf.reduce_mean(ce)
    
    加入正则化后:q
    loss = y与y_的差距+tf.add(tf.get_collection('losses'))
    '''
    '''
    指数衰减学习率
    learning_rate = tf.train.exponential_decay(
    	LEARNING_RATE_BASE,
    	global_step,
    	数据集总样本数/BATCH_SIZE,
    	LEARNING_RATE_DECAY,
    	staircase=True
    )
    '''
    
    '''
    滑动平均学习率
    ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY,global_step)
    ema_op = ema.apply(tf.trainable_variables())
    with tf.control_dependencies([trains_step,ema_op]):
    train_op = tf.np_op(name='train')
    '''
    
    train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step)
    
    
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        for i in range(train_steps):
            sess.run(train_step,feed_dict={x:,y_:})
            if i%轮数 ==0print
    
 if __name__ =='__main__':
    backward()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子象限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值