[吃药深度学习随笔] 前向传播:即如何在图中输入数据向前推进从而得到计算结果

w = tf.Variable(tf.random_normal([2,3], stddev=2,mean=0, seed=1))

其中

tf.random_normal是正太分布

  除了这个 还有tf.truncated_normal:去掉过大偏离点(大于2个标准差)的正态分布

  tf.random_uniform:平均分布

[2,3]是生成2x3的矩阵

stddev是标准差

mean是均值

seed是随机数种子

构造其余量的方法:

#tf.zeros 全0数组
tf.zeros([3,2], int32) #生成 [[0,0], [0,0], [0,0]]
#tf.ones 全1数组
tf.ones([3,2],int32) #生成 [[1,1], [1,1], [1,1]]
#tf.fill 全定值数组
tf.fill([3,2],8) #生成 [[8,8], [8,8], [8,8]]
#tf.constant 直接给值
tf.constant([3,2,1]) #生成[3,2,1]

在数组中[x,y]中 x即为有x个输入特征  y即为有y个输出特征

即如图 输入层有2个输入特征 而在隐藏层中有3个特征

所以数组为2x3

而最后隐藏层中 输出y 只有1个

所以隐藏层到输出层的权w即为3x1的数组

总结 即为

输入层X与2x3的权矩阵W1 相乘得到隐藏层a数据

隐藏层a数据与 3x1的权矩阵W2 相乘得到输出层y数据

代码过程:

import tensorflow as tf

#定义输入和参数
x = tf.constant([[0.7, 0.5]])
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 ("y is: ", sess.run(y))

得到结果:y is:  [[3.0904665]]

使用placeholder添加数据:

import tensorflow as tf

#定义输入和参数
#定义了一个数据类型为32位浮点,形状为1行2列的数组
x = tf.placeholder(tf.float32, shape=(1, 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 ("y is: ", sess.run(y, feed_dict={x: [[0.7, 0.5]]}))

添加多组数据:

import tensorflow as tf

#定义输入和参数
#定义了一个数据类型为32位浮点,形状为1行2列的数组
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 ("y is: ", sess.run(y, feed_dict={x: [[0.7, 0.5], [0.2,0.3],
                                                [0.3,0.4], [0.4,0.5]]}))
    print ("w1:", sess.run(w1))
    print ("w2:", sess.run(w2))

得到结果:

y is: [[3.0904665]
[1.2236414]
[1.7270732]
[2.2305048]]
w1: [[-0.8113182 1.4845988 0.06532937]
[-2.4427042 0.0992484 0.5912243 ]]
w2: [[-0.8113182 ]
[ 1.4845988 ]
[ 0.06532937]]

原文地址:https://www.cnblogs.com/EatMedicine/p/9029287.html

时间: 2024-11-08 05:43:53

[吃药深度学习随笔] 前向传播:即如何在图中输入数据向前推进从而得到计算结果的相关文章

[吃药深度学习随笔] 损失函数

神经元模型 常用的激活函数(激励函数): 神经网络(NN)复杂度:多用神经网络层数和神经网络参数个数来表示 层数 = 隐藏层层数+1个输出层 参数个数 = 总W(权重) + 总B(偏置) 比如 损失函数(loss):预测值y 和已知答案y_ 的差距 神经网络优化目标:使损失函数loss 达到最小 常用loss计算方法:均方误差MSE 公式: 在TensorFlow中代码: loss_MSE = tf.reduce_mean(tf.square(y-y_)) 例子: import tensorfl

[吃药深度学习随笔] 练习:训练二次方程的参数

import tensorflow as tf import numpy as np #训练二次函数的参数 #二次函数: y = ax^2 + bx +c SEED = 12345 #ABC参数 pA = 2 pB = 5 pC = 100 rng = np.random.RandomState(SEED) X = rng.rand(320, 1) #定义一个a=2 b=5 c=10的二次方程 Y = [[float(pA * pow(i, 2) + pB * i + pC)] for i in

[吃药深度学习随笔] 张量 计算图 会话

张量(tensor):即多为数组/列表 阶:即为张量的维数 张量可以表示0阶到n阶的多维数组 例子: import tensorflow as tf a = tf.constant([1.0, 2.0]) b = tf.constant([3.0, 4.0]) result = a+b print(result) 得到结果 Tensor("add:0", shape=(2,), dtype=float32) 计算图(Graph):搭建神经网络的计算过程,只搭建,不运算,运算在会话(Se

神经网络和深度学习之——误差反向传播算法

在讲解误差反向传播算法之前,我们来回顾一下信号在神经网络中的流动过程.请细细体会,当输入向量\(X\)输入感知器时,第一次初始化权重向量\(W\)是随机组成的,也可以理解成我们任意设置了初始值,并和输入做点积运算,然后模型通过权重更新公式来计算新的权重值,更新后的权重值又接着和输入相互作用,如此迭代多次,得到最终的权重. 信号向前传播,权重的更新反向传播,是这样吗? 是的,你的直觉没错,确实是反向传播. 1. 前馈的实质 反向传播这个术语经常被误解为用于多层神经网络的整个学习算法.实际上,反向传

深度学习面试题22:批量归一化在实践中的应用

目录 指数移动平均 BN在卷积网络中的使用 参考资料 假设已经训练好一个带有BN操作的卷积神经网络,但是在使用它预测时,往往每次只输入一个样本,那么经过该网络时,计算平均值和方差的意义就不大了,常采用的策略是计算训练阶段的平均值和方差的指数移动平均,然后在预测阶段使用它们作为BN操作时的平均值和方差. 指数移动平均 假设变量xt随时间t变化,按照以下规则定义其指数移动平均值 假设α=0.7 当t=1时,x1=5,则ema(1)=x1=5 当t=2时,x2=10,则ema(2)=α*ema(1)+

深度学习(上)

深度学习允许由多个处理层组成的计算模型来学习多个抽象层数据的表示.这些方法大大提高了目前最先进的语音识别,可视对象识别,目标检测和其他诸多领域如药物发现和基因组.深度学习发现大数据集结构很复杂,该结构使用BP算法来指示机器应该如何改变内部参数,这些参数是用于从前一层的表示来计算每层的表示.深度卷积网已经在处理图像,视频,语音和音频方面取得了突破,而递归网已经触及到连续数据,如文本和语音. 机器学习技术为现代化社会的许多方面提供了动力:从网络搜索到社交网络上的内容过滤到电子商务网站的推荐,并且越来

深度学习在图像识别中的研究进展与展望

深度学习在图像识别中的研究进展与展望 深度学习是近十年来人工智能领域取得的最重要的突破之一.它在语音识别.自然语言处理.计算机视觉.图像与视频分析.多媒体等诸多领域都取得了巨大成功.本文将重点介绍深度学习在物体识别.物体检测.视频分析的最新研究进展,并探讨其发展趋势. 1.深度学习发展历史的回顾 现在的深度学习模型属于神经网络.神经网络的历史可以追溯到上世纪四十年代,曾经在八九十年代流行.神经网络试图通过大脑认知的机理,解决各种机器学习的问题.1986年Rumelhart.Hinton和Will

MXNet设计笔记之:深度学习的编程模式比较

市面上流行着各式各样的深度学习库,它们风格各异.那么这些函数库的风格在系统优化和用户体验方面又有哪些优势和缺陷呢?本文旨在于比较它们在编程模式方面的差异,讨论这些模式的基本优劣势,以及我们从中可以学到什么经验. 我们主要关注编程模式本身,而不是其具体实现.因此,本文并不是一篇关于深度学习库相互比较的文章.相反,我们根据它们所提供的接口,将这些函数库分为几大类,然后讨论各类形式的接口将会对深度学习编程的性能和灵活性产生什么影响.本文的讨论可能不只针对于深度学习,但我们会采用深度学习的例子来分析和优

图像识别中的深度学习 转

转:http://mp.weixin.qq.com/s?__biz=MzAwNDExMTQwNQ==&mid=209152042&idx=1&sn=fa0053e66cad3d2f7b107479014d4478#rd#opennewwindow 1.深度学习发展历史 深度学习是近十年来人工智能领域取得的重要突破.它在语音识别.自然语言处理.计算机视觉.图像与视频分析.多媒体等诸多领域的应用取得了巨大成功.现有的深度学习模型属于神经网络.神经网络的起源可追溯到20世纪40年代,曾经