运用tensorflow写的第一个神经网络
因为实训课要用LSTM+attention机制在钢材领域做一个关系抽取。作为仅仅只学过一点深度学习网络的小白在b站上学习了RNN,LSTM的一些理论知识。
但只懂得一些理论知识是无法完成关系抽取的任务的。于是从图书馆借来《tensoflow实战-----深度学习框架》,在此开始记录我的tensorflow神经网络编程!
首先先介绍一下tensorflow的运作机制,对一个具体的计算而言,一般可以分为两个阶段,第一个阶段用来定义计算图中的计算,第二个阶段用来执行计算。
有了这个概念之后,就会发现这一操作能很好的将框架定义部分,和模型训练部分很好的分开,以下是第一次实验的代码:一个简单的分类问题,一个2,3,1(三层,每一层的节点数)的神经网络。
import tensorflow as tf
from numpy.random import RandomState
batch_size = 8
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.placeholder(tf.float32, shape=(None, 2), name="x_input")//placeholder一般用来在训练时存放输入数据,因为如果定义成常量的话,所消耗的空间太大
y_=tf.placeholder(tf.float32, shape=(None, 1), name="y_input")//参数介绍,需要定义类型和维度,None的意思是,不知道有几组训练数
biases1 = tf.Variable(tf.random_normal((1,3),stddev=1))//定义偏置,其实所谓偏置就是截距的概念
biases2 = tf.Variable(tf.random_normal((1,1),stddev=1))
#a = tf.matmul(x, w1)+biases1
//以下是实现前向传播
a = tf.sigmoid(tf.matmul(x, w1)+biases1)//用sigmoid函数充当激活函数,用来去线性化
y = tf.matmul(a, w2)+biases2
y = tf.sigmoid(y)
#损失函数选用交叉熵函数
cross_entropy = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y, 1e-10, 1.0))+(1-y)*tf.log(tf.clip_by_value(1-y, 1e-10, 1.0)))
#选择优化方法(即更新权重所用的反向传播的方法,这个adam法还不知道啥意思,目前只知道梯度下降)
train_step = tf.train.AdamOptimizer(0, 0.001).minimize(cross_entropy) #生成随机数据集
rdm = RandomState(1)#随机因子为1
dataset_size = 128
X = rdm.rand(dataset_size, 2)
Y = [[int(x1+x2<1)] for (x1, x2) in X]
//生成会话开始训练模型,即前面所提到的执行计算的阶段
with tf.Session() as sess:
//tensorflow中所有张量都要初始化
initall = tf.global_variables_initializer()
sess.run(initall)
#print(sess.run(biases1))
print(sess.run(w1))
print(sess.run(w2))
//训练集中抽取一小个部分叫一个batch,训练过程是一个batch一个batch训练的
steps = 5000
for i in range(steps):
start = (i*batch_size)%dataset_size
end = min(start+batch_size, dataset_size)
sess.run(train_step, feed_dict={x:X[start:end],y_:Y[start:end]})
//每训练1000次查看一下训练结果,即交叉熵函数的值,越小越好
if(i%1000==0):
total_cross=sess.run(cross_entropy, feed_dict={x:X, y_:Y})
print(i," ",total_cross)
//最后查看一下最后更新的权重
print(sess.run(w1))
print(sess.run(w2)) 第一次写博客,也是初学,有问题请大家指出哈。
运用tensorflow写的第一个神经网络的更多相关文章
- 2 TensorFlow入门笔记之建造神经网络并将结果可视化
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- AI - TensorFlow - 第一个神经网络(First Neural Network)
Hello world # coding=utf-8 import tensorflow as tf import os os.environ[' try: tf.contrib.eager.enab ...
- 使用TensorFlow v2.0构建卷积神经网络
使用TensorFlow v2.0构建卷积神经网络. 这个例子使用低级方法来更好地理解构建卷积神经网络和训练过程背后的所有机制. CNN 概述 MNIST 数据集概述 此示例使用手写数字的MNIST数 ...
- 手写数字识别 卷积神经网络 Pytorch框架实现
MNIST 手写数字识别 卷积神经网络 Pytorch框架 谨此纪念刚入门的我在卷积神经网络上面的摸爬滚打 说明 下面代码是使用pytorch来实现的LeNet,可以正常运行测试,自己添加了一些注释, ...
- 万事开头难,用HTML写的第一个界面,收获颇多
很开心跟了叶老师学习和做项目,基础不好,前期他会帮你安排好学习路线和计划.前期没有项目做,叶老师先让我先学习jQuery,给我推荐了一些网站,叫我一边学习,一边写博客.其实很早就有想写博客的想 ...
- TensorFlow 深度学习笔记 卷积神经网络
Convolutional Networks 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有问题可以到Is ...
- TensorFlow实现与优化深度神经网络
TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林Github工程地址:https://github.com/ahangchen/GDLnotes欢迎star,有问题可以到Issue ...
- Python初学者随笔(一)_ 用Python写的第一个游戏“猜数字”
如标题所写,这篇随笔主要记录下学习Python过程中用Python写的第一个游戏--"猜数字"_跟着"小甲鱼"学Python,链接: https://b23.t ...
- 基于tensorflow实现mnist手写识别 (多层神经网络)
标题党其实也不多,一个输入层,三个隐藏层,一个输出层 老样子先上代码 导入mnist的路径很长,现在还记不住 import tensorflow as tf import tensorflow.exa ...
随机推荐
- 自己总结numpy用法
最近用numpy比较多,边用边自己总结用法. 1. 数组 1.1 生成 m行 * n列 的随机数组 import numpy as np # 生成 m行*n列 的随机数组 # np.random.ra ...
- Axure制作dialog效果的动作步骤
1.在Axure中添加一个弹框按钮 2.将动态面版拖动到界面中 3.双击动态面版,双击state 4.拖入一块图片占位符进来 5.设置图片 6.回到上一个界面设置动态面版的大小,使其 ...
- 设置tabBar的图片/高度/title颜色
实现了一下内容: 1.设置tabBarItem选中及非选中时的图片,图片充满item; 2.调整了 tabBar 高度; 3.改变了title颜色及位置. ------------代码如下: ---T ...
- Windows系统Git安装教程(详解Git安装过程)
Windows系统Git安装教程(详解Git安装过程) 今天更换电脑系统,需要重新安装Git,正好做个记录,希望对第一次使用的博友能有所帮助! 获取Git安装程序 到Git官网下载,网站地址: ...
- 自生成图片验证码Servlet
package com.woniuxy.busniess.servlet; import java.awt.*; import java.awt.geom.*; import java.awt.ima ...
- 自建KMS服务器激活Windows office
一.KMS服务器环境介绍 操作系统Centos 7.x Windows Server 也是可以的,此处以Centos7为例安装,使用默认1688端口号 二.服务端安装过程: 1.下载安装包(这 ...
- Python 教你识别淘宝刷单,买到称心如意的商品
发际线堪忧的小 Q,为了守住头发最后的尊严,深入分析了几十款防脱洗发水的评价,最后综合选了一款他认为最完美的防脱洗发水. 一星期后,他没察觉到任何变化. 一个月后,他用卷尺量了量,发际线竟然后退了 0 ...
- 关于Oracle数据库的rownum应用
它是Oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,以此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀. 如以下语句将无法 ...
- (四十三)c#Winform自定义控件-Listview-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- asp.net MVC通用权限管理系统-响应式布局-源码
一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...