精华内容
下载资源
问答
  • }/*循环结束后,pre为q的前驱*/ if(q->info!=x)/*没找到*/ { printf("没有找到值为%d的结点!",x); } else /*找到了,下面要删除q*/ { if(q!=head){pre->next=q->next;free(q);} else if(head->next==head...
  • 解释的代码中研究了指令操作数(该操作数是我如何调用一个对象,该对象准确地描述了该指令计算机中的作用,哪些寄存器发生了变化以及有多少输出,是否有循环开始或结束...想象一下,作为一条向CPU描述执行该操作...
  • 我们已经看见训练结束后的结果令人印象深刻,但是它到底是如何运作的呢?现在跑两小实验来探究竟。 训练时输出文本的进化 首先,观察模型训练时输出文本的不断进化是很有意思的。例如,我使用托尔斯泰的《战争...

    理解训练过程

    我们已经看见训练结束后的结果令人印象深刻,但是它到底是如何运作的呢?现在跑两个小实验来一探究竟。

    训练时输出文本的进化

    首先,观察模型在训练时输出文本的不断进化是很有意思的。例如,我使用托尔斯泰的《战争与和平》来训练LSTM,并在训练过程中每迭代100次就输出一段文本。在第100次迭代时,模型输出的文本是随机排列的:

    tyntd-iafhatawiaoihrdemot  lytdws  e ,tfti, astai f ogoh eoase rrranbyne 'nhthnee e 
    plia tklrgd t o idoe ns,smtt   h ne etie h,hregtrs nigtike,aoaenns lng
    

    但是至少可以看到它学会了单词是被空格所分割的,只是有时候它使用了两个连续空格。它还没学到逗号后面总是有个空格。在迭代到第300次的时候,可以看到模型学会使用引号和句号。

    "Tmont thithey" fomesscerliund
    Keushey. Thom here
    sheulke, anmerenith ol sivh I lalterthend Bleipile shuwy fil on aseterlome
    coaniogennc Phe lism thond hon at. MeiDimorotion in ther thize."
    

    单词被空格所分割,模型开始知道在句子末尾使用句号。在第500次迭代时:

    we counter. He stutn co des. His stanted out one ofler that concossions and was 
    to gearang reay Jotrets and with fre colt otf paitt thin wall. Which das stimn 
    

    模型开始学会使用最短和最常用的单词,比如“we”、“He”、“His”、“Which”、“and”等。从第700次迭代开始,可以看见更多和英语单词形似的文本:

    Aftair fall unsuch that the hall for Prince Velzonski's that me of
    her hearly, and behs to so arwage fiving were to it beloge, pavu say falling misfort 
    how, and Gogition is so overelical and ofter.
    

    在第1200次迭代,我们可以看见使用引号、问好和感叹号,更长的单词也出现了。

    "Kite vouch!" he repeated by her
    door. "But I would be done and quarts, feeling, then, son is people...."
    

    在迭代到2000次的时候,模型开始正确的拼写单词,引用句子和人名。

    "Why do what that day," replied Natasha, and wishing to himself the fact the
    princess, Princess Mary was easier, fed in had oftened him.
    Pierre aking his soul came to the packs and drove up his father-in-law women.
    

    从上述结果中可见,模型首先发现的是一般的单词加空格结构,然后开始学习单词;从短单词开始,然后学习更长的单词。由多个单词组成的话题和主题词要到训练后期才会出现。

    RNN中的预测与神经元激活可视化

    另一个有趣的实验内容就是将模型对于字符的预测可视化。下面的图示是我们对用维基百科内容训练的RNN模型输入验证集数据(蓝色和绿色的行)。在每个字母下面我们列举了模型预测的概率最高的5个字母,并用深浅不同的红色着色。深红代表模型认为概率很高,白色代表模型认为概率较低。注意有时候模型对于预测的字母是非常有信心的。比如在http://www. 序列中就是。

    输入字母序列也被着以蓝色或者绿色,这代表的是RNN隐层表达中的某个随机挑选的神经元是否被激活。绿色代表非常兴奋,蓝色代表不怎么兴奋。LSTM中细节也与此类似,隐藏状态向量中的值是[-1, 1],这就是经过各种操作并使用tanh计算后的LSTM细胞状态。直观地说,这就是当RNN阅读输入序列时,它的“大脑”中的某些神经元的激活率。不同的神经元关注的是不同的模式。在下面我们会看到4种不同的神经元,我认为比较有趣和能够直观理解(当然也有很多不能直观理解)。

    ————————————————————————————————————————

    2ae42139518681b8cbbe4f854fdef515_hd.jpg本图中高亮的神经元看起来对于URL的开始与结束非常敏感。LSTM看起来是用这个神经元来记忆自己是不是在一个URL中。

    ——————————————————————————————————————————

    63ac60c5e0fc60017e45360516c95682_hd.jpg高亮的神经元看起来对于markdown符号[[]]的开始与结束非常敏感。有趣的是,一个[符号不足以激活神经元,必须等到两个[[同时出现。而判断有几个[的任务看起来是由另一个神经元完成的。

    ——————————————————————————————————————————

    c41f6b3d378e74b45698950a95b32d29_hd.jpg这是一个在[[]]中线性变化的神经元。换句话说,在[[]]中,它的激活是为RNN提供了一个以时间为准的坐标系。RNN可以使用该信息来根据字符在[[]]中出现的早晚来决定其出现的频率(也许?)。

    ——————————————————————————————————————————

    27c8e4245a2e3726f6faa3af58c15603_hd.jpg这是一个进行局部动作的神经元:它大部分时候都很安静,直到出现www序列中的第一个w后,就突然关闭了。RNN可能是使用这个神经元来计算www序列有多长,这样它就知道是该输出有一个w呢,还是开始输出URL了。

    ——————————————————————————————————————————

    当然,由于RNN的隐藏状态是一个巨大且分散的高维度表达,所以上面这些结论多少有一点手动调整。上面的这些可视化图片是用定制的HTML/CSS/Javascript实现的,如果你想实现类似的,可以查看这里

    我们可以进一步简化可视化效果:不显示预测字符仅仅显示文本,文本的着色代表神经元的激活情况。可以看到大部分的细胞做的事情不是那么直观能理解,但是其中5%看起来是学到了一些有趣并且能理解的算法:

    —————————————————————————————————————————

    d86db8d5322c96a366e59572e01a5685_hd.jpg25eea1bd327845168fab51e66c78d77d_hd.jpg—————————————————————————————————————————

    在预测下个字符的过程中优雅的一点是:我们不用进行任何的硬编码。比如,不用去实现判断我们到底是不是在一个引号之中。我们只是使用原始数据训练LSTM,然后它自己决定这是个有用的东西于是开始跟踪。换句话说,其中一个单元自己在训练中变成了引号探测单元,只因为这样有助于完成最终任务。这也是深度学习模型(更一般化地说是端到端训练)强大能力的一个简洁有力的证据。

    源代码

    我想这篇博文能够让你认为训练一个字符级别的语言模型是一件有趣的事儿。你可以使用我在Github上的char rnn代码训练一个自己的模型。它使用一个大文本文件训练一个字符级别的模型,可以输出文本。如果你有GPU,那么会在比CPU上训练快10倍。如果你训练结束得到了有意思的结果,请联系我。如果你看Torch/Lua代码看的头疼,别忘了它们只不过是这个100行项目的高端版。

    题外话。代码是用Torch7写的,它最近变成我最爱的深度学习框架了。我开始学习Torch/LUA有几个月了,这并不简单(花了很多时间学习Github上的原始Torch代码,向项目创建者提问来解决问题),但是一旦你搞懂了,它就会给你带来很大的弹性和加速。之前我使用的是Caffe和Theano,虽然Torch虽然还不完美,但是我相信它的抽象和哲学层次比前两个高。在我看来,一个高效的框架应有以下特性:

    • 有丰富函数(例如切片,数组/矩阵操作等)的,对底层CPU/GPU透明的张量库。
    • 一整个基于脚本语言(比如Python)的分离的代码库,能够对张量进行操作,实现所有深度学习内容(前向、反向传播,计算图等)。
    • 分享预训练模型非常容易(Caffe做得很好,其他的不行)。
    • 最关键的:没有编译过程!或者至少不要像Theano现在这样!深度学习的趋势是更大更复杂的网络,这些网络都有随着时间展开的复杂计算流程。编译时间不能太长,不然开发过程将充满痛苦。其次,编译导致开发者放弃解释能力,不能高效地进行调试。如果在流程开发完成后有个选项能进行编译,那也可以。

    拓展阅读

    在结束本篇博文前,我想把RNN放到更广的背景中,提供一些当前的研究方向。RNN现在在深度学习领域引起了不小的兴奋。和卷积神经网络一样,它出现已经有十多年了,但是直到最近它的潜力才被逐渐发掘出来,这是因为我们的计算能力日益强大。下面是当前的一些进展(肯定不完整,而且很多工作可以追溯的1990年):

    在NLP/语音领域,RNN将语音转化为文字,进行机器翻译,生成手写文本,当然也是强大的语言模型 (Sutskever等) (Graves) (Mikolov等)。字符级别和单词级别的模型都有,目前看来是单词级别的模型更领先,但是这只是暂时的。

    计算机视觉。RNN迅速地在计算机视觉领域中被广泛运用。比如,使用RNN用于视频分类图像标注(其中有我自己的工作和其他一些),视频标注和最近的视觉问答。在计算机视觉领域,我个人最喜欢的RNN论文是《Recurrent Models of Visual Attention》,之所以推荐它,是因为它高层上的指导方向和底层的建模方法(对图像短时间观察后的序列化处理),和建模难度低(REINFORCE算法规则是增强学习里面策略梯度方法中的一个特例,使得能够用非微分的计算来训练模型(在该文中是对图像四周进行快速查看))。我相信这种用CNN做原始数据感知,RNN在顶层做快速观察策略的混合模型将会在感知领域变得越来越流行,尤其是在那些不单单是对物体简单分类的复杂任务中将更加广泛运用。

    归纳推理,记忆和注意力(Inductive Reasoning, Memories and Attention)。另一个令人激动的研究方向是要解决普通循环网络自身的局限。RNN的一个问题是它不具有归纳性:它能够很好地记忆序列,但是从其表现上来看,它不能很好地在正确的方向上对其进行归纳(一会儿会举例让这个更加具体一些)。另一个问题是RNN在运算的每一步都将表达数据的尺寸和计算量联系起来,而这并非必要。比如,假设将隐藏状态向量尺寸扩大为2倍,那么由于矩阵乘法操作,在每一步的浮点运算量就要变成4倍。理想状态下,我们希望保持大量的表达和记忆(比如存储全部维基百科或者很多中间变量),但同时每一步的运算量不变。

    在该方向上第一个具有说服力的例子来自于DeepMind的神经图灵机(Neural Turing Machines)论文。该论文展示了一条路径:模型可以在巨大的外部存储数组和较小的存储寄存器集(将其看做工作的存储器)之间进行读写操作,而运算是在存储寄存器集中进行。更关键的一点是,神经图灵机论文提出了一个非常有意思的存储解决机制,该机制是通过一个(soft和全部可微分的)注意力模型来实现的。译者注:这里的soft取自softmax。基于概率的“软”注意力机制(soft attention)是一个强有力的建模特性,已经在面向机器翻译的《 Neural Machine Translation by Jointly Learning to Align and Translate》一文和面向问答的《Memory Networks》中得以应用。实际上,我想说的是:

    注意力概念是近期神经网络领域中最有意思的创新。

    现在我不想更多地介绍细节,但是软注意力机制存储器寻址是非常方便的,因为它让模型是完全可微的。不好的一点就是牺牲了效率,因为每一个可以关注的地方都被关注了(虽然是“软”式的)。想象一个C指针并不指向一个特定的地址,而是对内存中所有的地址定义一个分布,然后间接引用指针,返回一个与指向内容的权重和(这将非常耗费计算资源)。这让很多研究者都从软注意力模式转向硬注意力模式,而硬注意力模式是指对某一个区域内的内容固定关注(比如,对某些单元进行读写操作而不是所有单元进行读写操作)。这个模型从设计哲学上来说肯定更有吸引力,可扩展且高效,但不幸的是模型就不是可微分的了。这就导致了对于增强学习领域技术的引入(比如REINFORCE算法),因为增强学习领域中的研究者们非常熟悉不可微交互的概念。这项工作现在还在进展中,但是硬注意力模型已经被发展出来了,在《 Inferring Algorithmic Patterns with Stack-Augmented Recurrent Nets》,《 Reinforcement Learning Neural Turing Machines》,《Show Attend and Tell》三篇文章中均有介绍。

    研究者。如果你想在RNN方面继续研究,我推荐Alex GravesIlya SutskeverTomas Mikolov三位研究者。想要知道更多增强学习和策略梯度方法(REINFORCE算法是其中一个特例),可以学习David Silver的课程,或Pieter Abbeel的课程

    代码。如果你想要继续训练RNN,我听说Theano上的keraspassage还不错。我使用Torch写了一个项目,也用numpy实现了一个可以前向和后向传播的LSTM。你还可以在Github上看看我的NeuralTalk项目,是用RNN/LSTM来进行图像标注。或者看看Jeff Donahue用Caffe实现的项目。

    结论

    我们已经学习了RNN,知道了它如何工作,以及为什么它如此重要。我们还利用不同的数据集将RNN训练成字母级别的语言模型,观察了它是如何进行这个过程的。可以预见,在未来将会出现对RNN的巨大创新,我个人认为它们将成为智能系统的关键组成部分。

    最后,为了给文章增添一点格调,我使用本篇博文对RNN进行了训练。然而由于博文的长度很短,不足以很好地训练RNN。但是返回的一段文本如下(使用低的温度设置来返回更典型的样本):

    I've the RNN with and works, but the computed with program of the 
    RNN with and the computed of the RNN with with and the code
    

    是的,这篇博文就是讲RNN和它如何工作的,所以显然模型是有用的:)下次见!

    转载。原文:https://zhuanlan.zhihu.com/p/22230074

    展开全文
  • 程序是数据结构实验的图的存储和遍历,就是输入一个图转化成邻接矩阵,再把邻接矩阵变成邻接表,最后深度优先遍历邻接表生成森林: ``` #include #include #include #include #include using namespace ...
  • #include 为什么没有.h,只是windows给了我们错觉,后缀很重要; using namespace std; 采用标准的命名空间; cout<<“hello world”<...如何判断程序是否跑完,还是停留循环; 同时

    写在开头:

    之前在B站上学习了浙江大学翁恺老师的C++课程av71983220,自己也做了一些笔记,但一直没有整理。这次重新学习,整理一下,和大家分享。

    主要内容:

    1. #include<iostream>
      相对对C语言的#include<stdio.h>为什么缺少了.h?文件名不一定是要有后缀的,只是windows给了我们错觉;
      评: linux系统就和后缀无关,后缀和文件类型没啥关系!
    2. using namespace std;
      采用标准的命名空间;
    3. cout<<“hello world”<<endl;
      cout表示标准输出,把这个字符串往cout去输出,也是左移符号的含义;
      endl表示end of line一行的结束;
    4. 一个完整的C++程序:
    #include<iostream>
    
    using namespace std;
    
    int main(){
    	cout<<"Hello, World! I am "<<18<<" Today!"<<endl;
    	
    	return 0; 
    } 
    
    1. 老师采用eclipse做开发,新建工程等;本人采用的是Dev C++
    2. eclipse开始出现xx的原因,边书写代码,边做检查,需要花一些时间,等一小会就没有xx了;
    3. 代码行前面出现bug符号,可以将鼠标移动到bug上,会提示bug出现在哪里;
    4. 代码编写完成,先build编译,然后执行;
      在这里插入图片描述
    5. 程序运行的结果出现在Console中,如果程序需要输入,那么也在Console中输入+;
    6. 如何判断程序是否跑完,还是停留在死循环?右侧红框里面出现红点,则表示程序未执行完;左侧红框的terminated表示程序执行完成;
      在这里插入图片描述
    7. 竟然可以同时运行两个程序,或者将一个程序运行两次,点击两次运行即可,利用下图的方式做切换处理;
      在这里插入图片描述
    8. 大佬们肯定是不会用eclipse,用vi和g++进行演示;
      在这里插入图片描述
    9. C++如何实现输入?源代码如下:
    #include<iostream>
    
    using namespace std;
    
    int main(){
    	int number;
    	
    	cout << "Enter a decimal number:";
    	cin >> number; 
    	cout << "The number you entered is " << number << "." << endl;
    	
    	return 0; 
    } 
    
    1. 利用eclipse,对变量进行重新命名?自己原来都傻不拉几一个一个替换,或者用文本编辑器replace all,但要不效率太低,要不然可能会出问题
      利用refactor对变量重构,学会使用工具!!
      在这里插入图片描述
    展开全文
  • 1、 要注意的是,如果一开始输入的就只有一个项数为0的常数,求导应该输出0 0。记得区分出这种情况的输出。所以求导过程中,先判断项数是否为0,若不为0才对该项进行求导计算。 2、这题比较难的是:未知输入...

    总结:

    1、  要注意的是,如果一开始输入的就只有一个项数为0的常数,求导后应该输出0 0。记得区分出这种情况的输出。所以在求导过程中,先判断项数是否为0,若不为0才对该项进行求导计算。

    2、这题比较难的是:在未知输入数据个数时,“如何结束循环”。一开始是想用项数=0来结束循环的,后来发现有可能不存在该项那么循环将无法结束,又想到了用getchar来接收字符——一开始想的是用do...while形式,只要字符不等于'\n'就继续循环,但发现并行不通(我也想不清楚为什么QAQ),于是换了一种方式:选择while(1),但在循环中判断输入的字符是否为'\n',如果是则跳出循环,这在通过了所有测试用例。

     

    展开全文
  • 如果我在循环中运行它,由变量 i 定义,它会在第 6 文件结束后停止,说 n 要求我关闭 matlab。 我检查写入的输出文件以了解有多少文件已结束。 然后我必须选择第 8 ,假设第 7 没有正确的数据,并且它开始...
  • 作为命令执行一个后引号的字符串并且 引号字符为文字字符串命令并允许 fi 中使用双引号扩起文件名称。 sample1: FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command 会分析 myfile.txt 中...
  • 课程内容: 通过代码写入我们找到了处理技能结构ID的代码,通过分析我们知道他是如何一个过程,对于我们来说无须去写一次,直接调用游戏内部的代码即可. 051 -技能流程处理(1) 课程内容: 设计自动技能攻击流程. 052...
  • 那时大家劲头都很足,当我结束了第一期的学习,看到新来的朋友一遍一遍问老师“如何输入一个4位数,然后把它反序输出”,写的思路根本不对。我就冷不丁冒出一句:“怎么不用循环那”其实那时还没讲到这个。只能...

      5月8日,我在成都工作快一年后,经过一番思想斗争。改行了_-

    进入北大青鸟开始了一段学习。

    那时大家劲头都很足,当我结束了第一期的学习后,看到新来的朋友在一遍一遍问老师

    “如何输入一个4位数,然后把它反序输出”,写的思路根本不对。我就冷不丁冒出一句:“怎么不用循环那”

    其实那时还没讲到这个。

    只能一个一个的拆分。取余,做除法

    当然,后来也可以用数组加指针。一道题,本身就有好多的解法。

       现在,很多题都不是几行代码能搞定了,甚至不是一个文件。

    很多人也就不问老师了,有点怀念刚来时的激情。也庆幸自己依然保存有这份激情……

    待续

    展开全文
  • Java开发技术大全(500源代码).

    热门讨论 2012-12-02 19:55:48
    lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发错误示例1 narrowingConversion_2.java 缩减转换引发错误示例2 notMultipleOfThree.java 把...
  • Shell脚本实现倒计时功能

    千次阅读 2019-04-21 14:29:20
    效果图如下: #!/bin/bash #AUTHOR:AN #DATE:2019-04-21 #FUNCTION:屏幕显示倒计时 #DESCRIBE:模拟单片机中数码管的数字显示形状,先把0~9中的每数字造出来 ...#PEOBLEM:如何在计时结束后按Ctrl+c退出,且显示光标...
  • 如果s1>s2,输出一个正数;s1=s2,输出0;s1,输出一个负数。不要用strcmp函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。例如,’A’与’C’相比,由于...
  • Proteus仿真—40单片机初学程序.

    热门讨论 2009-04-13 13:00:56
    如图4.1.1所示:P1.0端口上接一个发光二极管L1,使L1不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2. 电路原理图 图4.1.1 3. 系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路...
  • 轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。 前端js中,轮询是定时循环去访问一个接口,获取最新的状态 二、使用...
  • #getchar() 1从缓冲区读取一个字符(包括空格/tab/回车),相当于清空缓冲区 2如果键盘缓冲区有残留会直接读取,例如scanf函数输入enter会残留换行符\n;...4如何利用getchar()和putchar()循环输入输出 cha
  • javascript入门笔记

    2018-05-15 15:01:07
    1、声明一个变量 r ,来表示一个圆的半径,并赋值 2、声明一个常量PI ,来表示圆周率3.14 3、通过 r 和 PI 来计算 该圆的周长,保存变量l中 周长 = 2 * π * 半径 4、通过 r 和 PI 来计算 该圆的面积,保存...
  • 1.1.1 如何实现一个高效的单向链表逆序输出? 1.1.2 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点10位 1.1.3 给定一个二叉搜索树(BST),找到树中第 K 小的节点 1.1.4 LRU缓存机制 ...
  • 循环结束后,p即为最大元素的下标,q则为该元素值。若此时i≠p,说明p,q值均已不是进入小循环之前所赋之值,则交换a[i]和a[p]之值。 此时a[i]为已排序完毕的元素。输出该值之后转入下次循环。对i+1以后各个...
  • 每次吃到一个蛋,ssize加1,并且将更新前球的位置加入到snake, 这样下次输出就能够多输出一个球,实现了大小的增加。 关卡的切换:每当球吃了一个蛋以后,判断是否达到了球的最大大小20,如果达到了, 继续判断...
  • Java期末总结

    2020-07-12 18:44:25
    一学期的java课程已经结束了,通过这学期对Java的学习,我学习到了很多,首先就是对java有了一个全面的认识,其次也学到了很多知识点,比如:基本类型与数据,循环语句,子类继承,接口,SQL结构化语句还有多线程...
  • C语言编程要点

    2017-09-18 00:10:37
    5.13. 你能指定编译时包含哪一个头文件吗? 85 5.14. 1包含文件可以嵌套吗? 85 5.15. 包含文件最多可以嵌套几层? 85 5.16. 连接运算符“##”有什么作用? 86 5.17. 怎样建立对类型不敏感的宏? 86 5.18. 什么是标准...
  • 数据结构实验

    2012-04-13 09:55:47
    如何利用二分查找算法在一个有序表中插入一个元素x,并保持表的有序性? 实验7:至少三种排序算法的程序实现 (第十六周星期三7、8节) 一、 实验目的 1.掌握简单插入排序、冒泡排序、快速排序、堆排序以及归并...
  • 给定一个纯小数,若是无限循环小数,用括号标记循环节,输入小数表达不超过100个字符。 输出格式 输出:化为最简分数形式,分子前,分母在后,中间空格连接。 输入样例 0.3(33) 输出样例 1 3 提示 此题...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

如何在循环结束后输出一个