TensorFlow实现二分类神经网络的训练

网络的结构

这是一个全连接的神经网络。(相邻两层之间任意两个节点都有连接)
在这里插入图片描述
前向传播算法示意图:
在这里插入图片描述
将输入x1、x2组织成一个12的矩阵x=[x1, x2], 而W1组织成一个23的矩阵:
在这里插入图片描述
通过矩阵乘法就可以得到隐藏层三个节点的向量取值:
在这里插入图片描述
类似输出层可以表示为矩阵的形式:
在这里插入图片描述
所以就可以得到前向传播过程的TensorFlow实现。

a = tf.matmul(x, w1)	# tf.matmul实现了矩阵乘法的功能
y = tf.matmul(a, w2)	

实现一个前向传播算法

Tensorflow的变量声明函数为tf.Variable(), 其作用为保存和更新神经网络中的参数。TensorFlow中的变量需要指定初始值,初始值可以设置成随机数、常数或者是通过其他变量的计算得到。一般使用随机数给TensorFlow中的变量初始化。
在这里插入图片描述
在这里插入图片描述

使用变量实现的向前传播算法

import tensorflow as tf

# tf.random_normal产生的随机数服从正态分布,主要用于平均值,标准差,取值类型的参数
# 设定随机种子为1,可以保证每次得到的结果是一致的
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))

# 将输入的特征向量定义为一个常量
x = tf.constant([[0.7, 0.9]])

# 通过前向传播算法获得神经网络的输出
# matmul为矩阵乘法
a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

sess = tf.Session()
# 这里不能直接通过sess.run(y)来获得y的取值,因为w1和w2还没进行初始化过程
sess.run(w1.initializer)
sess.run(w2.initializer)
print(sess.run(y)
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值