搭建神经网络基本构架
输入数据集
X、Y
X和Y在会话为x,y喂入数据
占位符:
x = tf.placeholder(tf.float32, [None, 2], name='x_input') #[None, 2]None指的batch size的大小,所以可以是任何数,2表示列为2
y = tf.placeholder(tf.float32, [None, 1], name='y_input') #[None, 1]表示列为1,行不定
构建前向传播:
W1 = tf.Variable(tf.random_normal([2, 4])) # 这里定义了一个1*10的变量,未被赋值,只有调用
b1 = tf.Variable(tf.random_normal([4], stddev=1, seed=1))
Wx_plus_b1 = tf.matmul(xs, W1) + b1
output1 = tf.nn.sigmoid(Wx_plus_b1) # 激活函数 sigmoid 用来对计算结果进行数值处理W2 = tf.Variable(tf.random_normal([4, 2]))
b2 = tf.Variable(tf.random_normal([2], stddev=1, seed=1))
Wx_plus_b2 = tf.matmul(output1, W2) + b2
output2 = tf.nn.sigmoid(Wx_plus_b2)# 输出层
W3 = tf.Variable(tf.random_normal([2, 1]))
b3 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
Wx_plus_b3 = tf.matmul(output2, W3) + b3
y = tf.nn.sigmoid(Wx_plus_b3) # 输出数据
非线性激励函数:
tf.nn.relu
tf.nn.sigmoid
tf.nn.tanh
损失函数和优化器:
均方误差损失函数:
loss = tf.reduce.mean(tf.square(y - y_))
train_step = tf.train.AdamOptimizer(0.001).minimize(loss) # 梯度下降法更新参数 0.1为学习率
初始化所有节点:
init = tf.global_variables_initializer() #还需要在会话中运行才有效
会话:
with tf.Session() as sess:sess.run()
代码示例:
import matplotlib.pyplot as plt # 可视化库
import os
import numpy as np # 数据生成import tensorflow as tfos.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" # 防止出现错误代码134# 通过随机数生成一个模型数据集
from numpy.random import RandomState# 数据集参数
rdm = RandomState(1) # 使用随机种子1进行数据生成,也可设置为其他值
dataset_size = 512 # 数据个数# 定义规则来给出样本的标签。在这里所有 x1*x1 + x2*x2 <1 的样例都被认为是正样本(比如零件合格),
# 而其他为负样本(比如零件不合格)。和 TensorFlow 游乐场中的表示法不大一样的地方是,
# 这里使用 0 来表示负样本,1 来表示正样本。大部分解决分类问题的神经网络都会采用0和1的表示方法。X = rdm.randn(dataset_size, 2) # X 的 shape 是 dataset_size*2
Y = np.array([[int(x1 * x1 + x2 * x2 < 1)] for (x1, x2) in X]) # Y 会生成取值为 0 或 1 的序列
print("X.shape=", X.shape)
print("Y.shape=", Y.shape)# 数据可视化
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
for i in range(dataset_size):if Y[i] == 1:plt.scatter(X[i, 0], X[i, 1], color='#2B91D5') # 标签为 1 的数据涂成蓝色else:plt.scatter(X[i, 0], X[i, 1], color='#F79709') # 标签为 0 的数据涂成橙色# 设置绘图区域
ax.set_xlim(-3.5, 3.5)
ax.set_ylim(-3.5, 3.5)
# 绘制图像
plt.show()# 神经网络结构定义
# 输入层xs = tf.placeholder(tf.float32, [None, 2], name='x_input') # xs起名x_input,会在图形上显示
ys = tf.placeholder(tf.float32, [None, 1], name='y_input') # ys起名y_input,会在图形上显示# 隐藏层
# 四节点
W1 = tf.Variable(tf.random_normal([2, 4])) # 这里定义了一个1*10的变量,未被赋值,只有调用tf.global_variables_initializer()初始化后才被赋值
b1 = tf.Variable(tf.random_normal([4], stddev=1, seed=1))
Wx_plus_b1 = tf.matmul(xs, W1) + b1
output1 = tf.nn.sigmoid(Wx_plus_b1) # 激活函数 sigmoid 用来对计算结果进行数值处理W2 = tf.Variable(tf.random_normal([4, 2]))
b2 = tf.Variable(tf.random_normal([2], stddev=1, seed=1))
Wx_plus_b2 = tf.matmul(output1, W2) + b2
output2 = tf.nn.sigmoid(Wx_plus_b2)# 输出层
W3 = tf.Variable(tf.random_normal([2, 1]))
b3 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
Wx_plus_b3 = tf.matmul(output2, W3) + b3
y = tf.nn.sigmoid(Wx_plus_b3) # 输出数据# 损失函数
loss = -tf.reduce_mean(ys * tf.log(tf.clip_by_value(y, 1e-10, 1.0)) +(1 - ys) * tf.log(tf.clip_by_value(1 - y, 1e-10, 1.0))) # 交叉熵损失函数train_step = tf.train.AdamOptimizer(0.001).minimize(loss) # 梯度下降法更新参数 0.1为学习率# 初始化
init = tf.global_variables_initializer()
step = 10001
with tf.Session() as sess:sess.run(init)# 训练for i in range(step):sess.run(train_step, feed_dict={xs: X, ys: Y})if i % 1000 == 0:# 计算所有数据的损失total_loss = sess.run(loss, feed_dict={xs: X, ys: Y})# 输出损失函数print("在{:>5}次迭代后,损失函数计算值为{:.4}".format(i, total_loss))
搭建神经网络基本构架相关推荐
- 使用OneFlow搭建神经网络
使用OneFlow搭建神经网络 在 识别 MNIST 手写体数字 的例子中,通过 flow.layers 和 flow.nn 中提供的接口搭建了一个简单的 LeNet 网络.下面,将通过LeNet来介 ...
- 在《我的世界》里搭建神经网络,运行过程清晰可见,不仅好玩,而且代码全部开源!...
晓查 凌晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 可能是疫情吧,大家在现实中行动受限,就越来越多去游戏世界中释放天性. 前有<我的世界>举办毕业典礼,后有<动物森友 ...
- 在《我的世界》里搭建神经网络,运行过程清晰可见,这位印度小哥开发的新玩法火了...
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 晓查 凌晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 可能是疫情吧,大家 ...
- 用Numpy搭建神经网络第二期:梯度下降法的实现
https://www.toutiao.com/a6696699352833851908/ 大数据文摘出品 作者:蒋宝尚 小伙伴们大家好呀~~用Numpy搭建神经网络,我们已经来到第二期了.第一期文摘 ...
- 真·机械朋克!物理学家用扬声器搭建神经网络,登上今日Nature
晓查 发自 凹非寺 量子位 | 公众号 QbitAI 用喇叭识别手写数字? 听起来好像是玄学,但这其实是正经的Nature论文啊. 下面的图,表面上看起来是个改造过的喇叭,其实用它来识别手写数字,正确 ...
- 9行Python代码搭建神经网络
9行Python代码搭建神经网络 Kaiser谈笑风生 4月前发表至趣味项目,5995次访问 原文:How to build a simple neural network in 9 lines of ...
- Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S
Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码.代码基于Python,需要用到的外部库有: Keras(搭建神经网络) Sci ...
- Tensorflow初学者之搭建神经网络基本流程
本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的, 讲的很好,浅显易懂,入门首选, 而且在github有代码, 想看视频的也可以去他的优酷里的频道找. Tensorflow 官网 神 ...
- 机器学习(七)——tf.keras搭建神经网络固定模式
一.总纲(一般按照下面6步搭建) import--导入相关模块 train,test--指定训练集与测试集 model = tf.keras.models.Sequential--在Sequentia ...
最新文章
- jquery文件上传插件|进度条
- 深度学习 end2end
- 8分频verilog线_Verilog设计分频器(面试必看)
- 裁剪(Clipping)-Window GDI
- 56个民族sql语句
- CSS3详解:background
- 详解李兰娟团队重大抗疫药物成果:2款处方药,体外试验有奇效,已在浙江临床使用...
- JavaScript 中的函数介绍
- CentOS/Ubuntu制作自动安装arm iso镜像
- java解析ajax的数据_java ajax 请求后获取 json 数据 以及 使用 解析 ,解惑
- 餐饮创业想赚钱,这5个思维方式少不了
- springmvc返回值、数据写到页面、表单提交、ajax、重定向
- 手机java环境_手机端搭建Java编译运行环境
- 【鱼眼镜头4】[鱼眼畸变模型]:四阶多项式模型
- VOSviewer:高频关键字段共现网络制作入门教程(以PubMed数据为例)
- Thinkphp6 获取当前协议+域名
- 办公一般用什么邮箱?哪个邮箱好用邮箱排行榜
- SAP与 WebService接口的配置与调用
- Apostrophe not preceded by \
- XYplorer设置-右键新建word文档或者md文档