实战google深度学习框架(第四章学习笔记)

1.激活函数常用的三个:
tf.nn.relu
tf.sigmoid
tf.tanh
2.异或问题
3.监督学习的两大种类:
分类问题和回归问题
分类问题使用的损失函数为交叉熵
softmax的作用是:将神经网络前向传播得到的结果变成一个概率分布
4.

v=tf.constant([1.0,2.0,3.0])
print(tf.log(v)).eval())

对每个元素取对数的命令

5.回归问题的误差函数:
均方误差损失函数:

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

y_代表标准答案

6.补充一个

rdm=RandomState(1)

https://blog.csdn.net/DoubleMilk/article/details/84796850
在这里插入图片描述
而这个随机数生成器只能生成0~1的

7.指数衰减学习率

tf.train.exponential_decay函数

随着迭代逐渐减小学习率
具体怎么用见书 P87

其中的global_step 见详解
这里有明确解释

大概意思就是 他相当于一个钟表,记录全局步数

8.L2正则化
add_to_collection函数可以将L2正则损失项加入loss
书P90
发现书上的代码有问题
解决 def get_weight(shape, lambda): 报错: ^ SyntaxError: invalid syntax 的问题
lambda是专用词 不能随便用

出现问题:

RuntimeError: Attempted to use a closed Session.

因为缩进的问题报错
以下附上完整的五层神经网络训练 运用L2正则化

#author MJY
#五层神经网络
import tensorflow as tf
from numpy.random import RandomState#为了生成模拟数据集
def get_weight(shape,lambda1):
    #生成一个变量
    var=tf.Variable(tf.random_normal(shape),dtype=tf.float32)
    tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(lambda1)(var))
    return var#losses是正则化损失项

x=tf.placeholder(tf.float32,shape=(None,2))
y_ = tf.placeholder(tf.float32, shape=(None, 1))
batch_size=8
#定义每一层中节点个数
layer_dimension=[2,10,10,10,1]
#神经网络的层数
n_layers=len(layer_dimension)
#维护前向传播最深层的节点,开始的时候为输入层
cur_layer=x
#当前层节点个数
in_dimension=layer_dimension[0]
#通过循环生成五层全链接网络
for i in range(1,n_layers):
    #下一层的节点个数
    out_dimension=layer_dimension[i]
    #生成权重
    weights=get_weight([in_dimension,out_dimension],0.001)
    bias=tf.Variable(tf.constant(0.1,shape=[out_dimension]))
    #使用relu激活
    cur_layer=tf.nn.relu(tf.matmul(cur_layer,weights)+bias)
    #更新节点数
    in_dimension=layer_dimension[i]

mse_loss=tf.reduce_mean(tf.square(y_-cur_layer))
tf.add_to_collection('losses',mse_loss)
loss=tf.add_n(tf.get_collection('losses'))#将所有的losses加起来可以得到最终的损失

train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

#引用下上个程序的数据集
#通过随机数生成一个模拟数据集:
rdm=RandomState(1)
dataset_size=128
X=rdm.rand(dataset_size,2)

Y=[[int(x1+x2<1)] for (x1,x2) in X]#定义规则

#创建会话
with tf.Session() as sess:
    initial = tf.global_variables_initializer()
    sess.run(initial)


    STEPS=5000
    for i in range(STEPS):
    #依次选取batch_size个样本进行训练
        start=(i * batch_size) % dataset_size
        end=min(start+batch_size,dataset_size)#定义了每一次的样本选取的起点到终点
        sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})
        if i%1000 == 0:
            total_loss=sess.run(loss,feed_dict={x:X,y_:Y})
            print("After %d training step(s),loss on all data is %g"%
              (i,total_loss))

9.滑动平均模型先不学了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值