Tensorflow笔记 3.2

本文详细介绍了使用TensorFlow搭建和训练神经网络的过程,包括参数初始化、前向传播、反向传播算法,以及如何通过迭代优化参数来训练模型。同时,提供了具体的代码示例,展示如何在会话中运行计算图,进行变量初始化和数据喂入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:内容来自MOOC北京大学,人工智能实践基础:Tensorflow笔记
一.参数:即图线上的权重W,用变量表示,随机给初值。
在这里插入图片描述
W = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
正态分布 产生2*3矩阵 标准差为2 均值为0 随机种子为1
Tf.random_normal()可用下面两个函数替代
(1)tf.truncated_normal()去掉过大偏离点的正态分布(两个标准差之内)
(2)tf.random_uniform()平均分布

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],6)生成[[6,6],[6,6],[6,6]]
tf.constant直接给值 tf.constant([3,2,1])生成[3,2,1]

二.神经网络的实现过程:
1.准备数据集,提取特征,作为输入喂给神经网络(Neutral Network. NN)

2.搭建NN结构,从输入到输出(先搭建计算图,在用会话执行)
NN前向传播算法–>计算输出

3.大量特征数据喂给NN,迭代优化NN参数
NN反向传播算法–>优化参数训练模型

4.使用训练好的模型预测和分类

三.前向传播:搭建模型,实现推理(以全连接网络为例)
eg。生产一批零件将体积X1重量X2为特征输入NN,通过NN后输出一个值。
在这里插入图片描述
在这里插入图片描述

四.实现细节
变量初始化,计算图节点运算要用绘画(with结构)实现
with tf.Session() as sess:
sess.run()
变量初始化:在sess.run函数中用tf.global_variable_initializer()
init_op=tf.global_variables_initializer()
Sess,.run(init_op)
计算图节点运算:在sess.run函数中写入待运算的节点
Sess.run(y)

用tf.placeholder占位,在sess.run函数中用feed_dict喂数据
(1)喂一组数据:
x=tf.placeholder(tf.float32,shape=(1,2))
Sess.run(y,feed_dict={x:[[0.5,0.6]]})
(2)喂多组数据:
X=tf.placeholder(tf.float32,shape=(None,2))
Sess.run(y,feed_dict={x: [[0.1,0.,2],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})

代码
喂一组数据

#coding:utf-8
#两层简单神经网络(全连接)
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 in tf3.2.py is:\n",sess.run(y))
#结果
#y in tf3.2.py is:
# [[3.0904665]]

喂多组数据

#coding:utf-8
#两层简单神经网络(全连接)

import tensorflow as tf

#定义输入和参数
#用placeholder定义输入(sess.run喂多组数据)
#不知道喂多少组输入,所以用None,特征为体积,质量,2维度
x = tf.placeholder(tf.float32, shape=(None, 2))
#随机生成正态分布,方差为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))

#定义向前传播过程
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("the result of py is:\n",sess.run(y, feed_dict={x: [[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))
	print("w1:\n",sess.run(w1))
	print("w2:\n",sess.run(w2))
#结果
'''the result of py 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]]'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值