运用tensorflow写的第一个神经网络

因为实训课要用LSTM+attention机制在钢材领域做一个关系抽取。作为仅仅只学过一点深度学习网络的小白在b站上学习了RNN,LSTM的一些理论知识。

但只懂得一些理论知识是无法完成关系抽取的任务的。于是从图书馆借来《tensoflow实战-----深度学习框架》,在此开始记录我的tensorflow神经网络编程!

首先先介绍一下tensorflow的运作机制,对一个具体的计算而言,一般可以分为两个阶段,第一个阶段用来定义计算图中的计算,第二个阶段用来执行计算。

有了这个概念之后,就会发现这一操作能很好的将框架定义部分,和模型训练部分很好的分开,以下是第一次实验的代码:一个简单的分类问题,一个2,3,1(三层,每一层的节点数)的神经网络。

import tensorflow as tffrom numpy.random import RandomStatebatch_size = 8w1 = 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)+biases2y = 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)#随机因子为1dataset_size = 128X = 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))

第一次写博客,也是初学,有问题请大家指出哈。

原文地址:https://www.cnblogs.com/guairenkuangren/p/12035281.html

时间: 2024-11-08 01:37:49

运用tensorflow写的第一个神经网络的相关文章

Orange&#39;s 自己动手写操作系统 第一章 十分钟完成的操作系统 U盘启动 全记录

材料: 1 nasm:编译汇编源代码,网上很多地方有下 2  WinHex:作为windows系统中的写U盘工具,需要是正版(full version)才有写的权限,推荐:http://down.liangchan.net/WinHex_16.7.rar 步骤: 1 编译得到引导程序的机器代码.用命令行编译汇编源代码:name boot.asm -o boot.bin,其中boot.bin文件产生在命令行的当前目录中. 2 将引导程序写入到U盘引导盘的第一个扇区的第一个字节处(后),即主引导区.

使用jqplot创建报表(一) 初学后写的第一个案例源码

一.初学后写的第一个案例源码 效果图: 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ include file="common.jsp"%> <html> <head> <script type="text/javascript" src=&q

python写的第一个简单小游戏-猜数字

1 #Filename:game1.py 2 3 guess=10 4 running=True 5 while running: 6 try: 7 answer=int(raw_input('Guess what i think:')) 8 except: 9 print 'Please input interga\n' 10 continue 11 12 if answer<guess: 13 print 'Your answer is too small\n' 14 continue 15

TensorFlow写的神经网络不work的原因

for epoch in range(training_steps): with tf.Session() as sess: sess.run(tf.global_variable_initializer()) sess.run(train_op) if epoch % 100 == 0 : print(sess.run([loss])) 上述代码写后,trian loss 和 valid loss 一致都不怎么变化,好像神经网络完全没有在训练一样.这是因为每训练一次后,weight和bias都

【深度学习与TensorFlow 2.0】卷积神经网络(CNN)

注:在很长一段时间,MNIST数据集都是机器学习界很多分类算法的benchmark.初学深度学习,在这个数据集上训练一个有效的卷积神经网络就相当于学习编程的时候打印出一行“Hello World!”.下面基于与MNIST数据集非常类似的另一个数据集Fashion-MNIST数据集来构建一个卷积神经网络. 0. Fashion-MNIST数据集 MNIST数据集在机器学习算法中被广泛使用,下面这句话能概况其重要性和地位: In fact, MNIST is often the first data

小程序初体验:手把手教你写出第一个小程序(一)

本文笔者将根据quick start中的范例代码,带大家简单地剖析一下小程序的运行方式,并介绍小程序开发中一些通用的特性,带着大家一步步写出自己的小程序. 适用对象:前端初学者,对小程序开发感兴趣者 tips:由于笔者也是一位前端菜鸟,所以尽量用简单直白的语言为大家讲解,如有说的不到位的地方,还望多多指教. 吊了我们一年胃口的小程序终于和大家见面了.经过了一天的发酵,小程序已经成为了今天的超级头条(汪汪哭晕在厕所). 经历了一天媒体对小程序的狂轰滥炸,相信大家对于小程序一定充满了好奇.与其跟风转

写给第一个喜欢的女孩的歌

<写给我第一个喜欢的女孩的歌> 演唱:洛天依作词:ilem作曲:ilem编曲:ilem混缩:ilem分类:原创语种:华语曲风:流行 你温柔的长发,在风中划过嘴角我幼稚的笑话,为何只有你没笑 你靠着窗发呆,我看你发呆而发呆 女孩,你太可爱,我不知怎么办 感谢你,那样沁人心脾的美丽 感谢你,让我回忆也变得甜 原谅我,有点笨拙的少女心 感谢你,出现在那里 你温柔的长发,在风中划过嘴角 我幼稚的笑话,为何只有你没笑你靠着窗发呆,我看你发呆而发呆女孩,你太可爱,我不知怎么办你问我的答案,是简单还是很难

写在第一天

自几周前,基本完成学院网站以后,我就计划着写一篇博文来总结这即将过去的多彩的一年.奈何,拖延病太过严重,一直拖啊拖啊,直到昨晚和舍友玩到了三点半的三国杀以致今早醒来11点多所带来的愧疚感,让我不得不强迫自己去完成这个延迟了数周的博文.(格式不重要啦,这一段姑且作为题记吧(笑脸)) 作为一个对传统文化无比虔诚的学渣,我不想把今天称为"新年",而只是叫做"元旦".但不管怎样说,至少社会更多认同的是阳历,所以2017这个数字的更替是无法拒绝的,尽管我想去拒绝.那么今天究竟

写论文第一天

终于动手开始写论文,这次决定记录写的过程中的点滴心得体会. 之前已经做了很多的数值实验,虽然到目前为止,实验结果还是不尽如我意,不过在写的过程中,不断改进,应该很快就能放进论文里了. 这里先说一下,主要的参考文献,当然也是随着论文写作的深入,不断添加的. 最近看文献的心得.打开一篇文献,先将文献分类. 1,是否是放在Introduction里的,这部分文献,主要看作者都做了哪些工作,对比本文,有哪些异同,有哪些铺垫.不必精读. 2,是否是用来精读的,主要看的地方也有几点:1,文章的内容安排,也就