tensorflow笔记(北大网课实战)
1、
tf.multiply(x,y1) # 对应元素相乘
tf.matmul(x,y2) # 矩阵相乘
2、会话:执行计算图中的节点运算的。
with tf.Session() as sess:
print sess.run(y)
3、参数:就是权重w,用变量表示。随机给初值。
w=tf.Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1))
正态分布, 标准差为2 均值是0
tf.truncated_normal() 去掉过大偏离点的正态分布
4、前向传播:搭建模型,实现推理
输入层,隐藏层,输出层
5、变量初始化、计算图节点运算,都要用会话实现:
变量初始化:
init_op=tf.global_variables_initializer()
sess.run(init_op)
计算图节点运算:在sess.run函数中用feed_dict喂数据
6、用tf.placeholder占位,在sess.run函数中用feed_dict喂数据
喂一组数据:
x=tf.placeholder(tf.float32,shape=(1,2)) 多组数据的话,把1改成None
sess.run(y,feed_dict={x:[[0.5,0.6]]})
import tensorflow as tf x = tf.placeholder(tf.float32,shape=(None,2))
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1)) a = tf.matmul(x, w1)
y = tf.matmul(a, w2) with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
print(sess.run(y,feed_dict={x: [[0.7, 0.5],[0.2,0.3],
[0.3,0.4],[0.4,0.5]]}))
print(sess.run(w1))
print(sess.run(w2))
7、反向传播:训练模型参数,在所有参数上用梯度下降,使NN模型在训练数据对上的
损失函数最小。
损失函数(loss):预测值y与已知答案y_的差距
均方误差MSE
loss=tf.reduce_mean(tf.square(y_-y))
反向传播训练方法:以减小loss值为优化目标
学习率 :决定参数每次更新的幅度
import tensorflow as tf
import numpy as np BATCH_SIZE = 8 #一次喂入的数据
seed = 23455 rng = np.random.RandomState(seed)
X=rng.rand(32,2)
Y=[[int(x0 + x1 < 1)] for (x0,x1) in X]
print(X)
print(Y) x = tf.placeholder(tf.float32, shape=(None,2))#体积和重量两个特征
yy= tf.placeholder(tf.float32,shape=(None,1))#只有一个特征,合格或者不合格 w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) a=tf.matmul(x,w1)
y=tf.matmul(a,w2) #定义损失函数及反向传播方法
loss = tf.reduce_mean(tf.square(yy-y))
train_step=tf.train.GradientDescentOptimizer(0.001).minimize(loss)#学习率为0.001 with tf.Session() as sess:
init_op=tf.global_variables_initializer()
sess.run(init_op)
print(sess.run(w1))
print(sess.run(w2)) #训练模型
STEPS=3000#训练三千轮
for i in range(STEPS):
start = (i*BATCH_SIZE)%32
end = start+BATCH_SIZE
sess.run(train_step, feed_dict={x: X[start:end],yy: Y[start: end]})
if i % 500 == 0: #每500轮打印一次loss值
total_loss = sess.run(loss,feed_dict={x: X, yy: Y})
print(i,total_loss)
print(sess.run(w1))
print(sess.run(w2))
8、搭建神经网络的八股:准备、前传、反传、迭代
(1)准备:import ;常量定义;生成数据集
(2)前向传播:定义输入、参数和输出
(3)反向传播:定义损失函数,反向传播方法
loss = train_step =
(4)生成会话,训练STEPS轮
9、损失函数
NN复杂度:多用NN层数和NN参数的个数表示
层数=隐藏层的层数+1个输出层
总参数=总w+总b
自定义损失函数:
交叉熵:表征两个概率分布之间的距离
10、学习率:每次参数更新的幅度
学习率设置多少合适?指数衰减率
11、滑动平均(影子值)
记录了每个参数一段时间内过往值得平均,增加了模型的泛化性。
针对所有参数:w、b
tensorflow笔记(北大网课实战)的更多相关文章
- tensorflow笔记2(北大网课实战)
1.正则化缓解过拟合 正则化在损失函数中引入模型复杂度指标,利用给w加权值,弱化了训练数据的噪声 一般不会正则化b. 2.matplotlib.pyplot 3.搭建模块化的神经网络八股: 前向传播就 ...
- 对于coursera上三门北大网课的评测
今年暑假开始就选了coursera上三门北大的网课——C++程序设计.算法基础.数据结构基础,它们属于一个项目的,上的话每个月249块钱,项目里包括这三门一共有七门课.因为一开始是三门课同时上的,数据 ...
- CoolBlog开发笔记第2课:搭建开发环境
教程目录 1.1 CoolBlog开发笔记第1课:项目分析 前言 今天是CoolBlog开发笔记的第2课,我们将要讲解的是开发环境的搭建.俗话说"工欲善其事必先利其器",Djang ...
- CoolBlog开发笔记第3课:创建Django应用
教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 前言 经过上一节我们已经创建了CoolBlog工程,但是关于CoolBlog的功能代码 ...
- CoolBlog开发笔记第4课:数据库模型设计
教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 1.3 CoolBlog开发笔记第3课:创建Django应用 前言 我新书<Py ...
- CoolBlog开发笔记第5课:请求与响应
教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 1.3 CoolBlog开发笔记第3课:创建Django应用 1.4 CoolBlog ...
- 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...
- tensorflow笔记(一)之基础知识
tensorflow笔记(一)之基础知识 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7399701.html 前言 这篇no ...
- tensorflow笔记(二)之构造一个简单的神经网络
tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...
随机推荐
- nginx做维护页面
需求: 一个网站本来有好几个域名,然后也有好几个二级域名,现在停掉了,要求把所有的域名.二级域名,以及具体的文件请求,都指向一个维护页面. 1 单独在vhost里建一个conf文件 server { ...
- mybatis-plus 乐观锁
参见:https://mp.baomidou.com/guide/optimistic-locker-plugin.html#%E4%B8%BB%E8%A6%81%E9%80%82%E7%94%A8% ...
- laravel.url
通过php artisan route:list 可以看到当前应用的路由情况, 在前端页面中如果要修改一个实体,需要用到实体.update,涉及的uri为实体/{实体},所用的http方法为put. ...
- react的this.setState详细介绍
this.setState是react类组件中最常用的一个react API,使用它可以改变state从而改变页面.今天我们就来详细的学习一下这个东西.比如: import React, { Comp ...
- 049-PHP输出当前文件的名称
<?php echo __FILE__; //利用常量__FILE__输出当前文件的名称 ?>
- Codeforces 176B 经典DP
非常好的一个题目,CF上的DP都比较经典 题意就是 给定一个串A,B,正好执行K次操作,每次操作可以把 A串从中间切开,并调换两部分的位置,问最后得到B串共有多少种不同的切法(只要中间有一次不同,即视 ...
- 每天一点点之vue框架开发 - vue 动态替换路由(地址栏)参数
import merge from 'webpack-merge': // 修改原有参数 this.$router.push({ query:merge(this.$route.query,{'max ...
- 关于SI522替代FM17522和MFRC522的资料对比
以下是SI522与FM17522.MFRC522的对比参数: SI522是完全PIN对PIN软硬件兼容MFRC522.CV520.FM17522,另外我们可提供一对一技术支持解决客户所遇到的问题: 1 ...
- list的泛型
更新记录 [1]2020.02.12-21:26 1.完善内容 正文 在学习list集合时,我看到书上写list的格式时 List<E> list = new ArrayList<& ...
- Element.scrollIntoView() 和 document.elementFromPoint ()
Element.scrollIntoView() 让当前的元素滚动到浏览器窗口的可视区域内 element.scrollIntoView(); // 等同于element.scrollIntoV ...