测试与开发人员的战斗——我不是一个人在战斗

游戏测试-战斗内核的自动化测试 今天给大家分享一个游戏自动化测试的落地。这款游戏有独立的战斗内核负责局内战斗的计算,所以每次需要测试战斗内核时,都需要服务器重新部署,客户端(移动端、PC端等)重新出包,最后才能交付给测试进行测试,整个流程比较长,也比较耗时,所以我们就考虑在战斗内核更新时就进行测试,这样可以简化测试流程,节约时间。 经过和内核组开发的探讨后,决定使用内核开发组提供的QT工具(如下图展示),在本地运行游戏的战斗内核,通过执行多个命令构建起测试的场景,再通过数据交互拿到测试数据,以此来达到我们想要的测试目的。 1. 环 阅读详情

作者:欧阳辰

 

 

作为一个测试老兵,经常听到有测试新人抱怨,需要和开发人员进行激烈的讨论,感觉像打仗一样。其实,测试人员和开发人员的战斗不仅仅在小公司有,在大型软件公司也是比比皆是。这种"战斗"不仅仅发生在开发周期的初期,也发生在开发过程中,甚至在产品发布后,很多产品质量问题的追责也会引入新的"战斗"。

 

 

作为一个老测试工程师,也聊聊开发人员和测试人员的战斗,谈谈自己的心得吧。

 

 

先说说战斗的种类。


1) 缺陷(Bug)属性之战: 
对于一个缺陷,开发人员和测试人员有不同意见,例如,开发人员说是“建议”,测试人员说“代码缺陷”;开发人员说是优先级3的,测试人员说是优先级1的;开发人员说不能重现问题,测试人员说曾经出现,必须调查。

 

2) 产品指标目标之战: 
对于一个产品达到什么要的指标,也是测试人员和开发人员讨论的热点。例如,测试人员说性能必须到达200毫秒,但是开发人员常反驳说500毫秒是合理的目标。虽然,在需求说明书中,产品经理规定了产品大的指标,但是一些执行的细节目标却没有仔细规定,这往往是开发人员和测试人员的战场。

 

3) 质量任务之战: 
质量保证的任务有很多种,包括写单元测试,收集试验数据,搭建环境,功能测试,安全检查等等…. 那么这些任务究竟是如何安排的,是测试人员做还是开发人员做,不同公司有不同的文化,有不同的开发测试人员比例,导致其分工也不一样。有时,开发和测试对于一些任务的责任人也有着不同看法,这也往往会成为战斗焦点。

 

4) 代码质量之战 
代码的质量的好坏,是否可接受也是在代码审查时经常讨论的,比如一些异常的处理,是否合理,覆盖面是否全面。

 

 

测试人员的战略和战术 
很多测试人员在这些战斗中不容掌握主动,以下就是一个老兵的一些经验,希望能够帮助测试人员在战斗中更好的赢得主动,为高质量软件产品赢得胜利。总的来说,对于测试人员说,是保护用户的体验,因此有机会得到更多人的支持,换句话说,测试人员”不是一个人在战斗“。另外,”多算胜,少算不胜“,讨论前尽量多准备准备。

 

1)多引用用户体验,多引用竞争对手的数据作为论据 
在讨论中,列举的论证时,如果测试人员的论据是以“我认为…..”,这种论据通常是不是很令他人信服的,因为开发人员也可以说”我认为…不是这样的..'’。因此,在讨论中,应该多引入用户体验的数据作为支持论据。另外,可以多多列举竞争对手的数据,也是很有说服力的。 

举例来说,一个用户登录界面,产品需要3秒钟登陆了,测试人员认为很慢,开发人员认为可以接受。那么,测试人员可以指出,在这种设计下,用户体验很差的,用户需要更好的性能,同时可以列举一些竞争对手的登录时间作为参考。少说”我认为…..”,多说用户体验差的具体数据。

 

2)争取项目经理或则产品经理的支持 
产品经理通常也是产品质量的坚决拥护者,因此产品经理通常都站在测试人员一边。如果在用户体验上,开发与测试人员的观点僵持不下的话,可以考虑将产品经理引入讨论,通常产品经理会支持更好的用户体验,而站在测试人员的一边。获取产品经理的支持,注意引入的次数与频率,如果引入过于频繁,有时容易导致开发人员的不满。

 

3)存同求异 
对于一些非关键的争论点,例如,一些与产品质量没有本质影响的决定,测试人员可以与开发人员保持不同的观点。对于这些不同观点,不会影响项目的进展和产品的质量。

 

4) 速战速决

孙子言”兵贵速,不贵久“。测试人员的工作通常繁重,如果花大量时间和开发人员争斗,往往得不偿失的。其实大部分讨论,在前5分钟,双方都已清楚的表达了观点,列举了大部分的论据,因此5分钟后的大部分讨论,都是这些观点和论据的反复陈述,通常无法通过论据本身说服别人。因此,我提倡对于单个问题的讨论,不应该超过5分钟,测试人员应该控制节奏,5分钟内结束讨论。如果5分钟内仍然没有结论,测试人员可以主动结束这次讨论:对于原则性的问题,考虑另外收集更多的论据(数据),获得更多人的支持,另找时间再和开发人员继续讨论;对于可以权衡的问题,可以考虑相互让步,以获得双赢;对于一些小问题,可以考虑抓大放小。

 

好了,说了这么多,都是纸上谈兵。其实战斗的技巧主要是来源于实践,希望大家能够在战斗之后,仍然能保持一个好的心情,另外减少激烈讨论所花的精力,并且提高有效性。

软件测试人员如何与开发人员沟通bug? 软件测试人员经常因为bug与开发人员争得面红耳赤,测试人员测出bug后,有的开发人员认为这不是bug,双方互不想让。那么,作为一名测试老司机,应该如何与开发人员进行测试bug沟通呢? 一般开发人员认为不是bug的,有两种常见情况:需求不确定;认为bug不可能发生。那么针对这两种情况,应该如何与开发人员有效共同呢? 如果开发人员认为需求不确定的bug,那么测试人员需要找来产品经理或项目经理进行确认,需不需要改动,三方商量后再与开发确定是否要修改。 如果是开发认为bug不可能发生这种情况,那么测. 阅读详情

相关推荐

测试人员与开发人员的比例究竟多少是合理的?

在一些软件大会上,人们常常会问这样一个问题:测试人员与开发人员的比例究竟多少是合理的?而这样的问题,很难直接给出一个答案。为什么会有这样的问题,可能来自于两方面的压力:许多公司领导总是希望得到一个合理的比例,然后按这个比例分配招聘的名额,或者设法缩小测试队伍,减少开发成本。多数情况下,测试人员工作量大,比开发人员忙,所以想寻求一个数据,来说服其公司,多招些测试人员。有些专家说,根据调查结果发现通常...

weixin_34228387的博客 1万+

职场沟通教训 程序汪改了一行代码,导致测试和开发大战

但是,去掉后代码改动点就非常多了,因为是微服务系统,我一改,下流系统也要跟着改动,这个影响面就大了。场景: 测试大佬要程序汪改一个问题,其实这不是功能问题,只是代码冗余字段多了,测试要求去掉,不去掉也不影响功能。群里开战:测试大佬和程序X,相互撕逼中,开发大佬也加入,程序汪也加入,扯来扯去 (程序X最后妥协了)1:先和测试说清楚代码改动的影响面,微服务比较坑爹,改一个接口性字段,影响到的链路可能比较长。不影响功能的问题,一个字拖,不要急着改(特别是微服务系统,影响面不好评估,系统太大了)

u011091199的博客 479

你在测试中发现了一个bug,但是开发认为这不是一个bug,你应该怎样解决?

测试、bug 协调合作

fengyupotest的博客 3207

为什么开发与测试老掐架呢

让我们思考几个常见的问题:软件测试的目的是什么?开发人员能否构建出没有Bug的完美软件?测人人员和开发人员:……

安晓辉生涯——聚焦程序员的职业规划与成长 2万+

浅议开发人员和测试人员关系

开发人员和测试人员的主要矛盾就集中在对bug的定义上。    测试人员辛辛苦苦发现软件中有问题,报了一个bug。这时就会出现两种状况。第一种,开发人员工作很忙,压力很大,外加心情不好,就会说出如下四类话:      a.你会不会用软件呀?     b.你使用了最bt的方法发现了用户永远也不可能发现的问题 。   c.由于我使用了XXX技术,YYY方法和受到了ZZZ的约束,所以只能出现这

iiiiMu_的博客 2286

培养开发人员的自我测试意识:策略与实践

本文探讨了在软件开发过程中培养开发人员自我测试意识的重要性及具体实施方法。通过分析开发人员自我测试意识的现状和问题,提出了多种有效的培养策略,包括加强培训教育、建立规范的自测流程、提供技术支持和工具、营造良好的团队文化等。旨在帮助开发团队提高代码质量,减少缺陷,提升项目交付效率,最终实现软件项目的高质量交付。

song0394的专栏 1034

开发工作和测试工作不能由同一部分人来完成。如果开发人员对程序的功能要求理解错了,就很容易按照错误的思路来设计测试用例。如果开发人员同时完成测试工作,那么测试工作就很难取得成功。

V模型的价值在于非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程各阶段的对应关系。在V模型中,测试工作在编码之后才能进行,所以在软件开发早期各个阶段引入的错误不能及时被发现。尤其是需求阶段的错误只有等到最后的验收测试才能被识别。对分析、设计阶段产生的错误不能及时发现并改正的缺点会对后期的修复工作带来诸多不便,造成更多资源的浪费和时间的延迟。 ------------...

cpongo881 2207

PCB Layout总结

PCB Layout作为硬件设计中的一个环节,也是很重要的一个环节;在硬件电路设计合理的情况下,他其实是影响性能的一个绝对重要的指标。现在很多的PCB Layout工程师都是按照硬件工程师或者PI SI工程师给出的约束规则来完成布局布线的,这些也就是俗称的 “拉线工”。他们重复而机械的完成一块块PCB设计,一段时间设计后,他们中的一些或许已经有了这样的一些经验:哪些要做等长,哪些要走粗、哪些要平...

xydlxd118的博客 2582

IT岗位中最“和谐”的两个工种:开发、测试趣谈

开发和测试是互联网公司最常见的两个工种,他们相互依赖,或者说单方面依赖,但至少不像开发和产品那样关系恶劣,动不动就武力解决(开玩笑)。 网上关于开发、产品关系的段子很多,但关于开发和测试的却不多。因为工作关系,对开发、测试都比较熟悉,所以今天我们来聊一聊开发和测试之间的那些事儿。 角色定位 开发:就像是建筑师一样,按照图纸的要求,打地基盖房子,尽可能100%还原设计师的要求。 开发自测的思路也一般以完成功能为主,想的是正常人应该的操作(但用户是正常人吗?) 测试:对测试过程充满了期待,他们像一群拆迁队一..

测试萌萌 666

三极管吸潮失效分析案例

案例背景三极管也称为晶体三极管,它被视为电子电路中最重要的器件之一。三极管顾名思义具有三个电极,它最主要的功能是电流放大和开关作用。本次失效案例中的三极管在仓库存放一段时间后,在PCBA测试过程中集中发生不良。分析过程1.外观检测对失效样品进行外观检测,未发现明显破损、裂纹等不良。2.X-ray检测对失效样品进行X-ray检测,金线、绑定点未发现异常。3.开封检测对失效样品进行开封检测,发现存在键合点脱落的现象,键合点附近的晶圆破损。4.SEM检测对失效样品进行SEM检测,发现晶圆键合点位置有裂纹和破损,金

sy220504的博客 1040

Transformer模型在语义通信中的实战应用:从信源编码到端到端优化

本文深入探讨了Transformer模型在语义通信中的实战应用,从信源编码到端到端优化。文章分析了Transformer凭借其强大的全局依赖建模能力,如何成为实现高效语义提取与传输的理想架构,并提供了构建可端到端训练系统的具体实现思路与评估方法,旨在为下一代智能通信系统提供技术参考。

o9p0q1的博客 689

测试工作中发现一个bug,而开发人员说不是一个bug,你该怎么处理?

  说法一: 1、首先明确开发说不是bug的理由。 2、如果是需求变更, 那就找产品经理确认是否是需求变更。 3、如果开发说测试环境问题, 让他说明清楚测试环境问题是什么,按照他说的验证一遍, 如果确实如他所说, 关闭bug,但是不是他说的那样,继续激活bug给开发解决,确保产品质量。 4、如果开发说用户不存在这种使用场景, 但是我们不认可他说的,把这个bug 知会到测试经理,让测试经理...

weixin_40388283的博客 5万+

Obsidian从零搭建:可验证、可回溯、可演进的知识库工具链

个人知识库不是开箱即用的软件,而是基于Markdown内核构建的可演进系统。其核心原理在于分离‘稳定内核’与‘可插拔扩展’:Obsidian原生支持双链、嵌入、Frontmatter等基础能力,构成不可降级的知识骨架;而Dataview、Templater等插件则作为可验证、可回溯的增强层,需通过三问验证(解决痛点?有原生替代?失效可降级?)方可引入。这种设计赋予知识库技术价值——抗版本升级、跨平台兼容、离线可用,并支撑技术文档管理、项目复盘、读书笔记等真实场景。当面对computer use插件不可用或h

weixin_30660027的博客 680

我不是一个称职的测试员

《流浪地球》的大火,不仅仅是奠定了中国科幻片的里程碑,同时也让一个年轻演员凭借这部影片留下了属于自己浓墨重彩的一笔。 因为成绩斐然,屈楚萧短时间内受到了大量的关注,但随之而来的是屈楚萧的私人信息被扒光,不管是微博小号、豆瓣、还是贴吧都一一被扒出来了! 速度如此之快,频率如此之高的网络暴力,也是被人们戏称为“灭星计划”,屈楚萧也是处在“人设崩塌”的边缘。 虽然,屈楚萧的演技和实力是有目共睹,但是一个...

qq_43567495的博客 284

VictoriaMetrics | 云原生监控新宠: 使用 vmagent 工具采集 VM 集群指标实战

摘要:本文介绍了vmagent工具的安装部署及配置实践,该工具是VictoriaMetrics官方提供的指标采集组件,支持兼容Prometheus指标采集与转发。文章详细讲解了从二进制方式部署vmagent的步骤,包括下载安装、创建运行环境、配置systemd服务等过程。通过8429端口可查看采集状态,并演示了将Prometheus配置迁移到vmagent的方法。vmagent可实现远程写入VictoriaMetrics集群,为云原生监控提供高效解决方案。

全栈工程师修炼指南-IT知识分享 444

微信H5网页支付JSAPI部分用户报错:system:access_denied 的解决方案

JSAPI 支付仅支持微信内置浏览器调用。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1683

【软件测试】BUG篇、测试人员与开发人员间关于bug发生争论

软件测试贯穿于软件的整个生命周期。

Yeeear的博客 1465

基于SOLIDWORKS API的工业级插件开发指南

SOLIDWORKS API是基于COM技术的一套开发接口,支持C#、VB.NET等语言,用于自动化建模、属性管理、界面定制等功能。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 2744

如何做一个让人看得起的测试人员

做测试做了5年,开发做了2年,“只有开发才是生产力”,因为这种现象的存在,所以很多国内企业,尤其是一些小型的企业,对测试重视程度不够,甚至没有专门的测试人员,可能有的是为了项目需要,设立了测试团队,1人测试团队也屡见不鲜,我就知道好多企业是一人测试组,而且还是应届生的也有。对于这样的企业,您无法想象测试人员的地位会是什么样,老板都觉得设置测试人员是组织架构需要,而不是为了质量需要,那开发人员对测试

xin.wang的博客 1102

我正用AI Agent重构传统GIS 核心功能,说大白话做空间分析

GeoAI-UP项目通过AI Agent技术实现自然语言驱动的空间分析,核心创新包括: 意图识别层:通过LLM理解用户需求,自动拆解为可执行目标 智能任务规划:动态生成分析流程,处理复杂依赖关系 统一算子架构:采用标准化接口封装200+空间分析功能 可视化工作流。

专注GIS软件开发。 495

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

测试人员如何赢得开发人员的尊重

看到这个标题,如果你认为我在痴人说梦,那么请一定仔细阅读本文。你还在认为测试和开发是天生的一对冤家,有不可调节的矛盾,是对立的两面么?开发的天职是构建程序,测试则恰恰相反,是从事破坏活动。其实从另外一个角度讲,矛盾的两者又是对立的统一面-共同为了把产品的质量提高。有的时候我们抱怨开发团队不够重视测试团队,请在抱怨的同时进行思考,是否我们的测试团队或者测试人员是不合格的。是否我们具备的测试人员

天行健,君子以自强不息 6627

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

开发人员应该测试自己的代码

Bias-free stand on this age-old highly debated question 在这个古老而备受争议的问题上,无偏见立场 This isn’t going to be a rant on the classic Developer vs QA wars. I have read many articles written by either a developer...

weixin_26717681的博客 1170

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

(翻译)测试人员和开发人员和谐相处的技巧

测试人员和开发人员和谐相处的技巧 ---Yogita Sahoo原著《A Tester’s Tips for Dealing with Developers》---Kiki翻译于2005/7/20 当测试人员证明了应用程序充满了bug时,她正在做一份令人满意的工作还是糟糕的工作?从一些开发人员的角度看,那是一份糟糕的工作。看上去很可笑,项目经理责备测试人员拖延了产品的发货期,开

Kiki的专栏-我译,我所爱 3190
上一篇: 测试设计与测试项目实战训练
下一篇: 测试基本功训练 - Linux与Shell编程
TIB
TIB
博客等级 码龄19年 2879粉丝 957原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值