Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >深度学习|tensorflow张量运算

深度学习|tensorflow张量运算

作者头像
罗罗攀
发布于 2019-03-21 08:23:45
发布于 2019-03-21 08:23:45
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

前言

为什么我们单独讲解一个tensorflow的张量(矩阵)运算了?因为神经网络原理其实就是矩阵的运算。如图所示,我们有三个神经元,两个输出。其实背后的计算不过是:

  • x和权重矩阵相乘
  • 加上偏差值
  • 激活函数

所以,学会矩阵运算,是实现神经网络的第一步。

矩阵相乘和相加

相乘

矩阵的相乘我们使用tf.matmul方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X = tf.Variable([[1.,1.,1.]])

W = tf.Variable([[-0.5,-0.2 ],
                 [-0.3, 0.4 ],
                 [-0.5, 0.2 ]])
                        
XW =tf.matmul(X,W )
                       
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    print(sess.run(XW ))
# [[-1.29999995  0.40000001]]
相加

矩阵的加法很简单,就是用+即可完成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b = tf.Variable([[ 0.1,0.2]])
XW =tf.Variable([[-1.3,0.4]])

Sum =XW+b
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    print('Sum:')    
    print(sess.run(Sum ))
# Sum:
#[[-1.19999993  0.60000002]]

神经网络实现

我们回到上图的问题,我们用tensorflow即可完成这个过程。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X = tf.Variable([[0.4,0.2,0.4]])

W = tf.Variable([[-0.5,-0.2 ],
                 [-0.3, 0.4 ],
                 [-0.5, 0.2 ]])
                         
b = tf.Variable([[0.1,0.2]])
    
XWb =tf.matmul(X,W)+b

y=tf.nn.relu(tf.matmul(X,W)+b)

with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    print('XWb:')    
    print(sess.run(XWb ))    
    print('y:')    
    print(sess.run(y ))

激活函数我们使用的是relu。如果值小于0就转换为0,大于0就是多少。当然如果想用sigmoid函数,用tf.nn.sigmoid即可。

随机初始值

神经网络中的权重和偏差刚开始都是随机的,后面我们通过反向传播来进行训练,通过优化算法获得最优值。 所以,我们首先对权重和偏差赋上随机值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([1, 2]))
X = tf.Variable([[0.4,0.2,0.4]])
y=tf.nn.relu(tf.matmul(X,W)+b)
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    print('b:')
    print(sess.run(b ))    
    print('W:')
    print(sess.run(W ))
    print('y:')
    print(sess.run(y ))   
输入用placeholder

神经元的输入我们是不固定的,这里我们用placeholder来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([1, 2]))
X = tf.placeholder("float", [None,3])
y=tf.nn.relu(tf.matmul(X,W)+b)
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    X_array = np.array([[0.4,0.2,0.4]])
    (_b,_W,_X,_y)=sess.run((b,W,X,y),feed_dict={X:X_array})
    print('b:')
    print(_b)    
    print('W:')
    print(_W)
    print('X:')
    print(_X)
    print('y:')
    print(_y)

总结

由于神经网络不是一成不变的(神经元个数,隐含层,数据情况都是不同的),所以我们将上面的代码,定义为函数,这样就可以灵活使用啦。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def layer(output_dim,input_dim,inputs, activation=None):
    W = tf.Variable(tf.random_normal([input_dim, output_dim]))
    b = tf.Variable(tf.random_normal([1, output_dim]))
    XWb = tf.matmul(inputs, W) + b
    if activation is None:
        outputs = XWb
    else:
        outputs = activation(XWb)
    return outputs
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.03.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习|tensorflow识别手写字体
我们依旧以MNIST手写字体数据集,来看看我们如何使用tensorflow来实现MLP。
罗罗攀
2019/03/21
3.4K0
深度学习|tensorflow识别手写字体
三天速成 TensorFlow课件分享
该教程第一天先介绍了深度学习和机器学习的潜力与基本概念,而后便开始探讨深度学习框架 TensorFlow。首先我们将学到如何安装 TensorFlow,其实我们感觉 TensorFlow 环境配置还是相当便捷的,基本上按照官网的教程就能完成安装。随后就从「Hello TensorFlow」开始依次讲解计算图、占位符、张量等基本概念。
刘盼
2018/03/16
2K0
三天速成 TensorFlow课件分享
深度学习_1_Tensorflow_1
# 深度学习 # 图像识别,自然语言处理 # 机器学习 深度学习 # 分类:神经网络(简单) 神经网络(深度) # 回归 图像:卷积神经网络 # 自然语言处理:循环神经网络 # cpu:运行操作系统,处理业务,计算能力不是特别突出 # gpu:专门为计算设计的 import tensorflow as tf a = tf.constant(5.0) b = tf.
Dean0731
2020/05/08
5380
tensorflow
此篇笔记参考来源为《莫烦Python》 tensorflow安装 在命令行模式下进入到python安装目录中的Scripts下,例如我的安装路径为:D:\Program Files (x86)\Python\Scripts 安装CPU版本的: pip3 install --upgrade tensorflow GPU版本: pip3 install --upgrade tensorflow-gpu 心酸啊,一开始使用这种方法超时了,想想就试着装一个anaconda吧,成功安装好了之后,但是IDLE中导入错误
闪电gogogo
2018/05/28
8910
手写体数字识别
Extracting MNIST_data/train-images-idx3-ubyte.gz Extracting MNIST_data/train-labels-idx1-ubyte.gz Extracting MNIST_data/t10k-images-idx3-ubyte.gz Extracting MNIST_data/t10k-labels-idx1-ubyte.gz Train Epoch: 01 Loss= 53.529132843 Accuracy= 0.8624 Train Epoch: 02 Loss= 33.633792877 Accuracy= 0.9002 Train Epoch: 03 Loss= 26.070878983 Accuracy= 0.9166 Train Epoch: 04 Loss= 21.878053665 Accuracy= 0.9256 Train Epoch: 05 Loss= 19.345390320 Accuracy= 0.9310 Train Epoch: 06 Loss= 18.134420395 Accuracy= 0.9348 Train Epoch: 07 Loss= 15.690796852 Accuracy= 0.9414 Train Epoch: 08 Loss= 15.634956360 Accuracy= 0.9372 Train Epoch: 09 Loss= 15.122309685 Accuracy= 0.9414 Train Epoch: 10 Loss= 14.535149574 Accuracy= 0.9426 Train Epoch: 11 Loss= 14.188427925 Accuracy= 0.9450 Train Epoch: 12 Loss= 14.709759712 Accuracy= 0.9426 Train Epoch: 13 Loss= 13.977644920 Accuracy= 0.9448 Train Epoch: 14 Loss= 13.594002724 Accuracy= 0.9466 Train Epoch: 15 Loss= 12.868132591 Accuracy= 0.9492 Train Epoch: 16 Loss= 12.838119507 Accuracy= 0.9506 Train Epoch: 17 Loss= 12.817976952 Accuracy= 0.9496 Train Epoch: 18 Loss= 12.890332222 Accuracy= 0.9506 Train Epoch: 19 Loss= 12.724534988 Accuracy= 0.9502 Train Epoch: 20 Loss= 13.171916008 Accuracy= 0.9494 Train Epoch: 21 Loss= 12.193360329 Accuracy= 0.9558 Train Epoch: 22 Loss= 11.771809578 Accuracy= 0.9516 Train Epoch: 23 Loss= 12.657453537 Accuracy= 0.9532 Train Epoch: 24 Loss= 12.012898445 Accuracy= 0.9552 Train Epoch: 25 Loss= 12.073326111 Accuracy= 0.9542 Train Epoch: 26 Loss= 12.455985069 Accuracy= 0.9556 Train Epoch: 27 Loss= 11.321227074 Accuracy= 0.9564 Train Epoch: 28 Loss= 12.093022346 Accuracy= 0.9568 Train Epoch: 29 Loss= 11.713661194 Accuracy= 0.9580 Train Epoch: 30 Loss= 11.451450348 Accuracy= 0.9588 Train Finished takes: 76.92 Starting another session for prediction
裴来凡
2022/05/29
1.4K0
手写体数字识别
神经网络参数与tensorflow变量
神经网络中的参数是神经网络实现分类或回归问题中重要的部分。在tensorflow中,变量(tf.Variable)的作用就是保存和更新神经网络中的参数。和其他编程语言类似,tensorflow中的变量也需要指定初始值。因为在神经网络中,给参数赋予随机初始值最为常见,所以一般也使用随机数给tensorflow中的变量初始化。下面一段代码给出了一种在tensorflow中声明一个2*3矩阵变量的方法:
狼啸风云
2019/01/18
9350
搭建的神经网络过程
x1、x2 表示输入,w1、w2 分别是 x1 到 y 和 x2 到 y 的权重,y=x1w1+x2w2。
foochane
2019/05/23
7310
搭建的神经网络过程
[TensorFlow深度学习入门]实战三·使用TensorFlow拟合曲线
[深度学习入门]实战三·使用TensorFlow拟合曲线 问题描述 拟合y= x*x -2x +3 + 0.1(-1到1的随机值) 曲线 给定x范围(0,3) 问题分析 在上篇博客中,我们使用最简单的y=wx+b的模型成功拟合了一条直线,现在我们在进一步进行曲线的拟合。简单的y=wx+b模型已经无法满足我们的需求,需要利用更多的神经元来解决问题了。 生成数据 import numpy as np import matplotlib.pyplot as plt import ten
小宋是呢
2019/06/27
2.8K0
[TensorFlow深度学习入门]实战三·使用TensorFlow拟合曲线
TensorFlow基础知识
x1、x2 表示输入,w1、w2 分别是 x1 到 y 和 x2 到 y 的权重,y=x1w1+x2w2。
foochane
2019/10/14
7540
TensorFlow基础知识
TensorFlow指南(一)——上手TensorFlow
http://blog.csdn.net/u011239443/article/details/79066094 TensorFlow是谷歌开源的深度学习库。不多介绍,相信准备学习TensorFl
小爷毛毛_卓寿杰
2018/04/18
1.1K0
TensorFlow指南(一)——上手TensorFlow
TensorFlow 速成 | 统计师的Python日记 第13天
今天将带来第13天的学习日记,开始学习 TensorFlow,介绍的版本是1.X。本文先认识一下 TensorFlow 的建模流程,学习搭建一个 logistic 回归,再用 TensorFlow 跑一个深度神经网络。
数说君
2019/06/04
6890
TensorFlow 速成 | 统计师的Python日记 第13天
深度学习之 TensorFlow(五):mnist 的 Alexnet 实现
尝试用 Alexnet 来构建一个网络模型,并使用 mnist 数据查看训练结果。 我们将代码实现分为三个过程,加载数据、定义网络模型、训练数据和评估模型。 实现代码如下: #-*- coding:utf-8 -*_ #加载数据 import tensorflow as tf # 输入数据 from tensorflow.examples.tutorials.mnist import input_data #TensorFlow 自带,用来下载并返回 mnist 数据。可以自己下载 mnist数据
希希里之海
2018/05/16
7090
TensorFlow学习
TensorFlow学习0.导语1.Session会话控制(两种打开模式)2.Tensorflow使用Variable3.Placeholder 传入值4.激励函数(activate function)5.定义添加神经层的函数6.建造神经网络7.matplotlib 可视化8.学习文章
公众号guangcity
2019/09/20
6260
TensorFlow学习
《Scikit-Learn与TensorFlow机器学习实用指南》第9章 启动并运行TensorFlow
第9章 启动并运行TensorFlow 来源:ApacheCN《Sklearn 与 TensorFlow 机器学习实用指南》翻译项目 译者:@akonwang @WilsonQu 校对:@Lis
ApacheCN_飞龙
2018/05/16
2K0
tensorflow mnist神经网络示例
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/79704120
bear_fish
2018/09/14
8150
tensorflow mnist神经网络示例
TensorFlow实践——Multilayer Perceptron
本文是在Softmax Regression的基础上增加了一个隐含层,实现了Multilayer Perceptron的一个模型,Multilayer Perceptron是深度学习模型的基础,对于Softmax Regression的TensorFlow实现,可以参见博文“TensorFlow实践——Softmax Regression”。对于Multilayer Perceptron的基本原理,可以参见以下的文章:
felixzhao
2019/01/31
4890
TensorFlow实践——Multilayer Perceptron
TensorFlow中常量与变量的基本操作演示
TensorFlow中常量与变量的基本操作演示 本文将介绍TensorFlow中的基本算法运算与矩阵运算,介绍Tensorflow中常量、变量、操作符等基本运算单元概念,同时会辅助介绍会话与变量初始化等概念。谷歌使用tensorflow来命名它的深度学习框架,可以说是十分贴切的,可以分为两个单词解释tensorflow分别为tensor与flow。tensor意思翻译为中文张量,但是到底什么才是张量,tensorflow官方对此的解释是: tensor表示N维的数组,向量就是一维张量、矩阵就是二维张量,其它
OpenCV学堂
2018/04/04
1.5K0
TensorFlow中常量与变量的基本操作演示
深度学习三人行(第15期)----基本RNN的Tensorflow实现
上期我们一起学习了RNN中输入输出任性的组合方式 深度学习三人行(第14期)----RNN输入输出的组合有多任性 原理学习了两期,今天我们一起看下在tensorflow中基本的RNN是怎么实现的。
智能算法
2019/05/22
4140
tensorflow入门:Softmax Classication
Softmax用于多元分类,同logistic regression一样使用cross entropy作为损失函数,其原理不再赘述。
Steve Wang
2019/05/26
3150
一看就懂的Tensorflow实战(模型的保存与读取)
首先,我们从一个直观的例子,讲解如何实现Tensorflow模型参数的保存以及保存后模型的读取。 然后,我们在之前多层感知机的基础上进行模型的参数保存,以及参数的读取。该项技术可以用于Tensorflow分段训练模型以及对经典模型进行fine tuning(微调)
AI异构
2020/07/29
8140
相关推荐
深度学习|tensorflow识别手写字体
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验