机器学习 Tensorflow基本句法2 前向传播

先把程序放上:

#coding:utf-8
#用 placeholder 实现输入定义(sess.run 中喂入一组数据)的情况
#第一组喂体积 0.7、重量 0.5

import tensorflow as tf
#定义输入和参数
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 in tf3_3.py is:")
    print(sess.run(y,feed_dict={x:[[0.7,0.5]]}) )

首先我们先看一下这个神经网络的结构:

输入数据是一个1行两列的数据。

w1参数(注意这里的w1就不是一个参数了,而是一个层面的参数)层面是一个矩阵,为2行3列,我们先画出输入数据和第一个隐含层的结构:

我们可以看到,隐含层的三个数是由x1和x2计算得到的,一共有6条线,正好对应了2*3的矩阵。

虽然不知道怎么排列也没有关系,不过学习最好是做到知根知底。这里详细列一下:

相应的矩阵:

[x1 x2]   [a11]  [a21]  [a31]
          [a12]  [a22]  [a32]

看到这里我想大家对结构就很了解了。

这样会输出一个1行3列的数组。然后进入下一个隐含层。

用于计算的设置的函数如下:

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
  • shape: 一维的张量,也是输出的张量。
  • mean: 正态分布的均值。
  • stddev: 正态分布的标准差。
  • dtype: 输出的类型。
  • seed: 一个整数,当设置之后,每次生成的随机数都一样。
  • name: 操作的名字

然后我们定义了前项操作的顺序,就是一系列的矩阵运算的结合。

计算图设计好了之后就是通过会话来进行计算了。

要首先初始化所有的

init_op=tf.global_variables_initializer()

因为在有tf.Variable代码运行的程序中,因为tf中建立的随机变量是没有被初始化的,参考别人所说,在运行时它还不是一个tensor量,而是一个Variable变量类型,所以需要先进行初始化。

然后我们运行,查看结果。

y in tf3_3.py is:
[[3.0904665]]

输出数据是一个,对应了我们隐含层的矩阵 3行1列,在一系列矩阵运算后是一个1行1列的矩阵(注意不是一个数,这也是矩阵)。

还可以设置多个输入变量:

x=tf.placeholder(tf.float32,shape=(None,2))

首先不确定输入变量的行数。

然后在运行中加入输入量:

sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}

就可以同时计算输出好几个数据。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dezeming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值