1 TensorFlow入门笔记之基础架构
————————————————————————————————————
写在开头:此文参照莫烦python教程(墙裂推荐!!!)
————————————————————————————————————
TensorFlow入门笔记之基础架构
1 构建简单神经网络:一维线性预测
#导入相关库
import tensorflow as tf
import numpy as np
#用随机数生成x
x_data = np.random.rand(100).astype(np.float32) #生成100个x
y_data = x_data * 0.1 + 0.3 #设定y=0.1x+0.3
#构建神经网络
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))#初始化Weights为-1.0到1.0的某个随机数
biases = tf.Variable(tf.zeros([1])) #biases初始化为0
y = Weights*x_data + biases #计算当前神经网络预测的y
loss = tf.reduce_mean(tf.square(y-y_data)) #损失函数
optimizer = tf.train.GradientDescentOptimizer(0.5) #神经网络优化器,0.5为学习效率,一般小于1
train = optimizer.minimize(loss) #训练使得损失函数最小
init = tf.initialize_all_variables() #初始化神经网络的结构
#激活神经网络
sess = tf.Session()
sess.run(init) #激活
for step in range(201):
sess.run(train)
if step % 20 == 0: #每20步打印训练的Weights和biases
print(step,sess.run(Weights),sess.run(biases)) #依次输出步数和当前Weights和当前biases
0 [0.0999992] [0.3000004]
20 [0.09999981] [0.3000001]
40 [0.0999999] [0.30000007]
60 [0.0999999] [0.30000007]
80 [0.0999999] [0.30000007]
100 [0.0999999] [0.30000007]
120 [0.0999999] [0.30000007]
140 [0.0999999] [0.30000007]
160 [0.0999999] [0.30000007]
180 [0.0999999] [0.30000007]
200 [0.0999999] [0.30000007]
因为我们的Weights真实值为0.1,biases真实值为0.3,所以从上面结果可知,这个网络的效果还是挺不错的!
2 Session 会话控制
可以用Session.run()来运行已经创好了的结构
import tensorflow as tf
matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],
[2]])
product = tf.matmul(matrix1,matrix2) #矩阵相乘
下面有两种方式来进行会话控制
#方式一
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()
[[12]]
#方式二,with部分运行后,会自动close Session,而不同显示close
with tf.Session()as sess:
result2 = sess.run(product)
print(result2)
[[12]]
上面两种方式得到的结果都是一样的,均为12
3 Variable变量
state = tf.Variable(0,name='counter')
print(state.name)#打印看看是啥
counter:0
one = tf.constant(1) #常量1
new_value = tf.add(state,one)
update = tf.assign(state,new_value) #把new_value赋给state
init = tf.initialize_all_variables()#初始化所有变量.一定要记得init所有的Variables
with tf.Session() as sess:
sess.run(init)
for _ in range(3):
sess.run(update)
print(sess.run(state))
1
2
3
4 Placeholder传入值
Placeholder主要用来代替某些你不想马上给定值的变量,而是在run或者特定位置再传值给它,有点类似于用户输入?。。。下面是一个例子。
import tensorflow as tf
input1 = tf.placeholder(tf.float32)#也可以是(tf.float32,[2,2]),这样给定input1是2行2列的float32
input2 = tf.placeholder(tf.float32)
output = tf.multiply(input1,input2) #相乘
with tf.Session() as sess:
print(sess.run(output,feed_dict={input1:[7.],input2:[2.]})) #这里才给input1,input2值
[14.]
5 激励函数
- 激励函数可以把线性函数变成非线性函数,常见的激励函数有:relu/sigmoid/tanh。当然啦,你也可以自己定义激励函数,但你要保证你的函数是可微分的!
- 多层神经网络时要慎重选择激励函数。
- 少量层神经网络结构可以随便尝试激励函数;卷积神经网络推荐使用relu;循环神经网络推荐使用relu/tanh。
*点击[这儿:TensorFlow]发现更多关于TensorFlow的文章*
1 TensorFlow入门笔记之基础架构的更多相关文章
- C#快速入门笔记(1)——基础语法
C#快速入门笔记(1)——基础语法 总体框架:
- tensorflow+入门笔记︱基本张量tensor理解与tensorflow运行结构
Gokula Krishnan Santhanam认为,大部分深度学习框架都包含以下五个核心组件: 张量(Tensor) 基于张量的各种操作 计算图(Computation Graph) 自动微分(A ...
- tensorflow入门笔记(五) name_scope和variable_scope
一.上下文管理器(context manager) 上下文管理器是实现了上下文协议的对象,主要用于资源的获取与释放.上下文协议包括__enter__.__exit__,简单说就是,具备__enter_ ...
- tensorflow入门笔记(二) 滑动平均模型
tensorflow提供的tf.train.ExponentialMovingAverage 类利用指数衰减维持变量的滑动平均. 当训练模型的时候,保持训练参数的滑动平均是非常有益的.评估时使用取平均 ...
- 5 TensorFlow入门笔记之RNN实现手写数字识别
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- 2 TensorFlow入门笔记之建造神经网络并将结果可视化
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- TensorFlow入门(矩阵基础)
1.placeholder 占位符 可以通过run方法传入值 测试代码如下: # encoding:utf-8 import tensorflow as tf # placeholder 占位符 可以 ...
- tensorflow入门笔记(四) tf.summary 模块
模块内的函数: tf.summary.audio(name, tensor, sample_rate, max_outputs=3, collections=None, family=None) 输出 ...
- tensorflow入门笔记(三) tf.GraphKeys
tf.GraphKeys类存放了图集用到的标准名称. 该标准库使用各种已知的名称收集和检索图中相关的值.例如,tf.Optimizer子类在没有明确指定待优化变量的情况下默认优化被收集到tf.Grap ...
随机推荐
- linux设置时间的方法
0. date -R 中国上海的时区是+8000 1.tzselect 设置时区,依次选择5,9,1,1(如果时区不一样,执行下面的命令得到之后时间是不一样的) 2.sudo ntpdate asi ...
- Unix系统编程(四)creat系统调用
我好疑惑啊,creat系统调用为啥没有以e结尾呢?搞得我每次都怀疑我敲错了. 在早期的UNIX实现中,open只有两个参数,无法创建新文件,而是使用creat系统调用创建并打开一个新文件. int c ...
- MapReduce实战(三)分区的实现
需求: 在实战(一)的基础 上,实现自定义分组机制.例如根据手机号的不同,分成不同的省份,然后在不同的reduce上面跑,最后生成的结果分别存在不同的文件中. 对流量原始日志进行流量统计,将不同省份的 ...
- linux命名对文件的读写和退出
vi xxx.txt 打开就能看到里面的内容.按 i 进入编辑模式,然后就可以输入内容了,也可以移动光标到你要删除内容的位置按删除键来删除内容.编辑完后可以按 Esc(键盘左上角) 进入命令模式.然后 ...
- easyUI的column的field的颜色属性
{field:'hasPrintStr',title:'状态',width:10,halign:'center',align:'right',styler: function(value,row,i ...
- 简单理解Javascript中的call 和 apply
javascript中面向对像的能力是后来加进来的, 为了兼容性, 所以整出了很多奇特的东西, function Animal(){ this.name = "Animal"; t ...
- IOS7--javascriptcore中jscontext使用要注意的一点
在公司一个项目中,用到了highchart做图表显示的组件,这就要用到了javascriptcore,代码就不上了,说说原理. 需求是这样的,通过http请求server csv格式的数据,然后解析, ...
- Asynchronous HTTP Requests in Android Using Volley
Volley是Android开发者新的瑞士军刀,它提供了优美的框架,使得Android应用程序网络访问更容易和更快.Volley抽象实现了底层的HTTP Client库,让你不关注HTTP Clien ...
- 2013暑假江西联合训练赛 -- by jxust_acm 解题报告
第6题是利用周期性求解, 第7题是 (总的序列长度-最长的满足要求的序列长度) 第8题是 设定起点,可以找到最早出现的不满足条件,然后后面都是不满足的,利用队列求解这个过程 大神给的简单,精炼的题解. ...
- OpenvSwitch2.4.0源码解读
原文发表在我的博客主页,转载请注明出处! 一.前言 OpenvSwitch,虚拟交换机,以下简称OVS,是云计算和SDN领域非常重要的一个开源交换机,如果需要深入研究云计算和SDN的数据平面,读懂OV ...