TensorFlow实现XOR
TensorFlow基础
1、概念
- TF使用图表示计算任务,图包括数据(Data)、流(Flow)、图(Graph)
- 图中节点称为op,一个op获得多个Tensor
- Tensor为张量,TF中用到的数据都是Tensor
- 图必须在
会话
中启动
示例
计算两个矩阵的乘积,
x = tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]])
y = tf.constant([[0,0,1.0],[0,0,1.0],[0,0,1.0]])
z = tf.matmul(x3,y3)
# Session激活z,得到计算结果
with tf.Session() as sess:
print(sess.run(z))
2、Tensor类型
(1)常量
值不可变
constant(
value,(数值)
dtype=None,(数据类型)
shape=None,(指定形状)
name='Const',(命名)
verify_shape=False()
)
代码
x = tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]],dtype=tf.float32,shape=[3,3],name='x')
# 简写
x = tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]])
(2)变量
代码
v2=tf.Variable(tf.constant(2),name='x')
(3)占位符
定义过程,执行时赋值
placeholder(
value,(数值)
dtype=None,(数据类型)
shape=None,(指定形状)
)
代码
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
z = tf.multiply(x, y)
with tf.Session() as sess:
print(sess.run(z, feed_dict={x:[1.0] , y: [2.0]}))
(4)平均值
计算张量的各个维度上的元素的平均值。
reduce_mean(
input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None
)
代码
x = tf.constant([[1.0,2.0],[3.0,4.0]],dtype=tf.float32,shape=[2,2])
tf.reduce_mean(x) ==> 2.5
tf.reduce_mean(x, 0) ==> [2. 3.]
tf.reduce_mean(x, 1) ==> [1.5 3.5]
(5) 优化器
tf.train.GradientDescentOptimizer
是实现梯度下降
算法的优化器。
机器学习、深度学习概念
1、代价函数
整个训练集上所有样本误差的平均。
2、目标函数
经过优化后,期望获得的函数。
3、激活函数
负责将神经元的输入映射到输出端。增加神经网络模型的非线性
。
激活函数几种常见类型:
- sigmod函数
\]
- tanh函数
\]
- Relu函数
\]
4、学习率
学习率决定参数
移动到最优值
的速度
快慢。学习率过大,会越过最优值
。学习率过小,优化效率低
。
5、前向传播(Forward Propagation)
第n层
神经元的值决定第n+1层
神经元的值。
6、反向传播(Back Propagation)
通过前向传播获取到的结果。为减少误差,进行反向求偏导数
,修正参数,再进行前向传播,一直迭代,直到训练获得最小的误差。
代码实现
import numpy as np
import tensorflow as tf
# 训练样本占位
data = tf.placeholder(tf.float32, shape=(4, 2))
label = tf.placeholder(tf.float32, shape=(4, 1))
with tf.variable_scope('layer1') as scope:
# 权重
weight = tf.get_variable(name='weight', shape=(2, 2))
# 偏置项
bias = tf.get_variable(name='bias', shape=(2,))
x = tf.nn.sigmoid(tf.matmul(data, weight) + bias)
with tf.variable_scope('layer2') as scope:
weight = tf.get_variable(name='weight', shape=(2, 1))
bias = tf.get_variable(name='bias', shape=(1,))
x = tf.matmul(x, weight) + bias
# 激活函数
preds = tf.nn.sigmoid(x)
# 损失函数
loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=label, logits=x))
# 学习率占位
learning_rate = tf.placeholder(tf.float32)
# 梯度下降优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
# 训练样本
train_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
train_label = np.array([[0], [1], [1], [0]])
# 执行
with tf.Session() as sess:
# 初始化变量
sess.run(tf.global_variables_initializer())
for step in range(10000):
if step < 3000:
lr = 1
elif step < 6000:
lr = 0.1
else:
lr = 0.01
_, l, pred = sess.run([optimizer, loss, preds], feed_dict={data: train_data, label: train_label, learning_rate: lr})
if step % 500:
print('Step: {} -> Loss: {} -> Predictions: {}'.format(step, l, pred))
TensorBoard与计算图可视化
TensorBoard是一个可视化工具,能够有效地展示Tensorflow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。
代码
writer = tf.summary.FileWriter('graphs',tf.get_default_graph())
writer.close()
打开图,输入命令
zhijiefang@fangzhijie-PC:~/test$ tensorboard --logdir=graphs
TensorBoard 1.11.0 at http://fangzhijie-PC:6006 (Press CTRL+C to quit)
计算图显示
运行结果
...
Step: 9993 -> Loss: 0.3484194874763489 -> Predictions: [[0.00179099]
[0.49935436]
[0.9978059 ]
[0.50105 ]]
Step: 9994 -> Loss: 0.3484194874763489 -> Predictions: [[0.00179098]
[0.49935436]
[0.9978059 ]
[0.50105 ]]
Step: 9995 -> Loss: 0.3484194874763489 -> Predictions: [[0.00179098]
[0.49935436]
[0.9978059 ]
[0.50105 ]]
Step: 9996 -> Loss: 0.3484194874763489 -> Predictions: [[0.00179097]
[0.49935436]
[0.9978059 ]
[0.50105 ]]
Step: 9997 -> Loss: 0.3484194576740265 -> Predictions: [[0.00179096]
[0.49935436]
[0.9978059 ]
[0.50105 ]]
Step: 9998 -> Loss: 0.3484194278717041 -> Predictions: [[0.00179096]
[0.49935436]
[0.9978059 ]
[0.50105 ]]
Step: 9999 -> Loss: 0.3484194278717041 -> Predictions: [[0.00179095]
[0.49935436]
[0.9978059 ]
[0.50104994]]
TensorFlow实现XOR的更多相关文章
- 【深度学习与TensorFlow 2.0】入门篇
注:因为毕业论文需要用到相关知识,借着 TF 2.0 发布的时机,重新捡起深度学习.在此,也推荐一下优达学城与 TensorFlow 合作发布的TF 2.0入门课程,下面的例子就来自该课程. 原文发布 ...
- Reading | 《TensorFlow:实战Google深度学习框架》
目录 三.TensorFlow入门 1. TensorFlow计算模型--计算图 I. 计算图的概念 II. 计算图的使用 2.TensorFlow数据类型--张量 I. 张量的概念 II. 张量的使 ...
- TensorFlow API 汉化
TensorFlow API 汉化 模块:tf 定义于tensorflow/__init__.py. 将所有公共TensorFlow接口引入此模块. 模块 app module:通用入口点脚本. ...
- tensorflow学习笔记——自编码器及多层感知器
1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...
- 李宏毅 Tensorflow解决Fizz Buzz问题
提出问题 一个网友的博客,记录他在一次面试时,碰到面试官要求他在白板上用TensorFlow写一个简单的网络实现异或(XOR)功能.这个本身并不难,单层感知器不能解决异或问题是学习神经网络中的一个常识 ...
- TensorFlow学习笔记7-深度前馈网络(多层感知机)
深度前馈网络(前馈神经网络,多层感知机) 神经网络基本概念 前馈神经网络在模型输出和模型本身之间没有反馈连接;前馈神经网络包含反馈连接时,称为循环神经网络. 前馈神经网络用有向无环图表示. 设三个函数 ...
- Tensorflow 官方版教程中文版
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译.一个月后,30章文档全部翻译校对完成,上线并提供电子书下载,该 ...
- [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
- tensorflow学习笔记二:入门基础
TensorFlow用张量这种数据结构来表示所有的数据.用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], ...
随机推荐
- 毕业原版=[约克大学毕业证书]York原件一模一样证书
约克大学毕业证[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归& ...
- 好几个div(元素)找到最后一个
<div> <div></div> <div></div> <div></div> </div> //找 ...
- java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava
搭建spring cloud的时候,报以下错误: java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplica ...
- .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证
内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用Ope ...
- SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解
前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡. SpringCloud Feign Fei ...
- 【推荐】.NETCore 简单且高级的库 csredis v3.0.0
前言 .NETCore 从1.0发布历经坎坷,一开始各种库缺失到现在的部分完善,走到今天实属不易. 比如 redis-cli SDK 简直是坑出不穷. 过去 .net 最有名望的 ServiceSta ...
- 用Docker解决坑爹的环境搭建系列——PHP+Apache2
sudo docker pull eboraas/apache-php sudo docker run -p 9991:80 --name php -v /data/docker/php/www:/v ...
- C# 创建含多层分类标签的Excel图表
相较于数据,图表更能直观的体现数据的变化趋势.在数据表格中,同一数据值,可能同时代表不同的数据分类,表现在图表中则是一个数据体现在多个数据分类标签下.通常生成的图表一般默认只有一种分类标签,下面的方法 ...
- 联发科MT8788基带处理器介绍
MT8788设备具有集成的蓝牙.fm.wlan和gps模块,是一个高度集成的基带平台,包括调制解调器和应用处理子系统,启用LTE/LTE-A和C2K智能设备应用程序.该芯片集成了工作在2.0GHz的A ...
- 关于RecyclerView嵌套导致item复用异常,界面异常的问题
常规需求: 外层RecyclerView嵌套内层RecyclerView , 在上下滑动的时候会出现item数据以及view的显示异常. 解决办法: 1.重写 getItemViewType 方法 ...