- 博客(69)
- 资源 (1)
- 收藏
- 关注
原创 Tensorflow 核心概念 Tensor、Operation、Session、Graph 代码级别解密和原理级别剖析之 Tensor (一)
本节试图从代码级别解密 TF 的 Tensor 这一概念,同时从原理级别剖析 Tensor 既是容器(粒子)又是张量(波)。(注,以下代码,仅仅是 TF 代码的关键点摘录,是为了契合本节主题的讲述。为了方便大家查看源代码,我会指明代码文件的路径)Python 包裹层一. Tensor 类,路径 tensorflow/tensorflow/python/framework/ops.py...
2018-09-14 06:48:37 944
原创 研究生近3年、工作近3年,见证了深度学习的萌芽和发展,有太多经验和心得,想和大家分享
2013 年研究生的时候,得知 2012 年 Hinton 教授带领他的团队构建的 AlexNet 模型在 ImageNet 图像识别比赛中,以绝对优势取得冠军。技术发展不破不立,Hinton 破 “ 激活函数 tanh ” 立 “ 激活函数Relu ”,破 “ 预训练 + 微调(hinton 2006年的论文)” 立 “有监督学习”。2015 年研究生的时候,Hinton 等人又论证了通过 ...
2018-09-11 22:51:33 1220 1
原创 DL 深度学习 大纲总览
以下是以后博客的大纲,持续更新中......目录开篇 前言一、深度学习--Tensorflow API 篇 (可能含Numpy API,Pandas API)二、深度学习--Tensorflow 编程原理 篇 数据流图 Data Flow Graphs Tensorflow 核心概念 Tensor、Operation、Session、Grap...
2018-09-11 22:34:29 620
原创 数据流图 Data Flow Graphs , 深度学习--Tensorflow 编程原理
如果你是 Theano 出身的学院派,比如我,可以很轻松的理解和使用 Tensorflow 。因为,TensorFlow 工具的编写参考了 Theano 的数据流图的思想。唯一一点需要记住的是,请忘掉 Theano.funciton() 函数吧。如果你是从C、汇编这样面向过程的语言开始,或者从 c++、java 、python等面向对象的编程语言开始,涉足 Tensorflow 的话,我相信我...
2018-09-10 23:27:10 4647 1
原创 ntdll中的zw函数和krl里的zw函数中有相同的ssdt服务号
ntdll zwCreateFile-------------------------7C92D090 >/$ B8 25000000 mov eax,0x257C92D095 |. BA 0003FE7F mov edx,0x7FFE03007C92D09A |. FF12 call dword ptr ds:[edx]
2016-12-14 23:11:47 408
原创 遍历活动进程链表
EPROCESS 结构的关键字段0xb4 4 pid0xb8 4 活动进程链表指针 ,指向全局变量PsActiveProcessHead,而全局变量PsActiveProcessHead指向活动进程链表指针 (它们怎么互指,有待windbg,或查资料)0xf4 4 句柄表的指针0x16c 16 进程名称0x188 4 进程里面的线程链表0x1a8 4 指向PEB的指针
2016-12-07 01:31:36 1217
原创 VS2010内核开发环境配置
假设你的项目叫做yourproj把下面的配置文件粘贴到,项目所在目录/yourproj/yourproj/xxx.vcxproj文件中 里面,就可以了。然后,右键项目,“生成”,驱动就会在 项目所在目录/yourproj/driver 文件夹里。///////////////////////////////////////////////////////////////////
2016-12-07 00:16:27 797
原创 愿我能陪你颠沛流离
如果你想要去实现梦想,孤独是你的必修课。如果不能沉下心来,就没有办法去实现它,因为那绝对不是一件容易的事情。生命也许是一场苦难,只是一介平时苦难的人,会甜的让我心甘情愿苦下去。我现在的寂寞难过,都会过去的,迟早最后的故事都会有结局,愿有人会陪你颠沛流离,一起走到出头的那天,一起走到你一生发一次光的那天。
2016-12-05 02:16:11 1510
原创 Java并发编程4.5-同步策略的文档化
1.为类的用户编写类线程安全性担保的文档;为类的维护者编写类的同步文档。2.每次使用synchronized,volatile或者任何线程安全类,都表现了一种同步策略,这个策略是你程序设计的一个元素,因此应该将它文档化。
2014-12-14 17:15:46 450
原创 Java并发编程4.4-向已有的线程安全类添加功能
1.第三个策略是扩展功能,而不是扩展类本身,并将扩展代码置于一个“助手(helper)”类2.(客户端加锁)这里的问题在于同步问题发生在错误(我认为是“不同”)的锁上。但是,通过使用封装容器的内部锁,可以支持客户端加锁。 3.(组合)向已有的类中添加一个原子操作,还有更健壮的选择:组合。4.实施:使用Java监视器模式有效的封装了一个已有的的List ,而且只要我们的类持有底层li
2014-12-14 17:14:18 497
原创 Java并发编程4.1-设计线程安全的类
1.设计线程安全类的过程应该包括下面3个基本要素:l 确保对象状态是由哪些变量构成的;l 确定限制状态变量的不变约束l 制定一个管理并发访问对象状态的策略注意:如果一个对象的域引用了其他对象,那么它的状态也同时包含了被引用对象的域。2.同步策略(synchronization policy)定义了对象如何协调对其状态的访问,并不会违反它的不变约束或后验条件。它规定了如何把不变性
2014-12-14 17:14:14 624
原创 Java并发编程4.2-实例限制
1. 实例限制 封装了类的线程安全化工作,这 通常 称为“限制”良好实践:将数据封装在对象内部,把对数据的访问限制在对象的方法上,更易确保线程在访问数据时总能获得正确的锁。把限制与各种适当的锁策略相结合,可以确保程序以线程安全的方式使用其他非线程安全对象。 法则:限制性使构造线程安全的类变得更容易,因为类的状态被限制后,分析它的线程安全性时,就不必检查完整的程序。。(被限制对象一定
2014-12-14 17:13:45 468
原创 Java并发编程实践3.4-不可变性
1.不可变对象。创建后状态不能被修改的东西。2.法则:不可变对象天生就是线程安全的。3.不可变对象: 只有满足如下状态,一个对象才是不可变的: A它的状态不能在创建后再修改; b 所有域都是final类型的;并且, c 它被正确创建(创建期间没有发生this引用的逸出)注意:final修饰的引用(的对象)时,指的是对象不可变(尽管final域指向的对象是可变的,
2014-12-14 17:12:54 458
原创 Java并发编程实践3.5-安全发布
1.法则:不可变对象可以在没有额外同步的情况下,安全的用于任意线程,甚至它们时亦不需要同步。?如果final域指向可变对象,那么访问这些对象的状态时仍然需要同步。2.如果一个对象不是不可变的,它就必须被安全地发布,通常发布线程与消费线程都必须同步化。3.法则:为了安全的发布对象,对象的引用以及对象的状态必须同时对其他线程可见。一个正确创建的对象可以通过下列条件安全的发布:l 通过静
2014-12-14 17:12:31 486
原创 Java并发编程实践3.3-线程封闭
0.法则:线程封闭,会保证线程安全1.栈限制。在栈限制中,只有通过本地变量才可以触及的对象(即,对象的引用只在方法中,编程人员不会发表此引用到方法之外)。 注意:本地的基本类型的变量,你无法尝试去利用栈限制。注意:无论是对象被限制于执行线程的设计需求,还是对“被限制的对象并非线程安全”这一情况的明确知晓,都只有编程人员编码的那一刻。2.ThreadLoad(线程本地变量)。它允许每
2014-12-14 17:11:27 428
原创 Java并发3.2-发布和逸出
1.发布的概念:能够使对象在创建它的范围之外的地方所使用。2.逸出的概念:一个对象在尚未准备好时就将它发布。3.发布对象的方式:a) 将对象存储到(赋值)公共静态域。b) 发布一个对象(此对象起容器的作用)还会间接的发布其他对象。c) 从非私有方法返回引用,也能发布返回对象(返回值的方式)。d) 更一般,在已经发布一个对象中,那些非私有域的引用链,和方法调用链中可获得的对象
2014-12-14 17:10:20 513
原创 Java并发3.1-可见性-续
1.疑问。对于程序清单3.3,仅仅同步setter是不够的,调用get线程仍然能够看见过期值。(为什么?)(是不是因为同一个对象,两个sychronized块拥有同一个锁,就使的value读同步)2.最低限的安全性。当一个线程在没有同步的情况下读取变量,它可能会得到一个过期值。但是它至少可以看到某个线程在那里设定的一个真实数值,而不是凭空而来的。3.非volatile的long和doubl
2014-12-14 17:08:26 385
原创 Java编程思想13.7-扫描输入
1.java SE5新增了Scanner类,它可以大大减轻输入的工作负担。2.有了Scanner,所有的输入、分词以及翻译的操作都隐藏在不同类型的next方法中。所有的基本类型都有对应的next方法。所有的next方法,只有在找到一个完整分词之后才会返回。3.Scanner还有相应的hasNext方法,用来判断一个输入分词是否是所需的类型。4.默认情况下Scanner根据空白字符对输入
2014-12-14 17:06:39 505
原创 Java编程思想13.6-正则表达式
1.在java中,“\\”才是转义字符。例如,你想表达一个数字,那么一个是\\d。但是请注意,如果是表达\本身,那么\\\\才是正确的。2.要表示“一个或多个之前的表达式”,应该使用+。例如“可能有一个负号,后面跟着一位或多位数字”,可以这样:-?\\d+3.在正则表达式中,括号有着将表达式分组的效果,而“|”则表示或操作。例如,想表达可能以一个加号或减号开头,(-|\\+)?
2014-12-14 17:06:24 492
原创 Java编程思想13.6.4-Pattern和Matcher
1.使用正则表达式。一般来说,比起功能有限的String类,我们更愿意构成功能强大的正则表达式对象。只需要导入java.util.regex包,然后用static Pattern.complile()方法编译你的正则表达式,就会生成Pattern对象。然后传入你要检索的字符串到Pattern对象的matcher()方法。Matcher方法就会生成一个Matcher对象。2.Pattern类的静
2014-12-14 17:06:06 479
原创 Java编程思想13.3-无意识的递归
1.无意识的递归。如果你希望toString()方法打印出对象的内存地址,也许你会考虑使用this关键字。这会引起递归。正确的做法是调用super.toString()方法。
2014-12-14 17:04:35 466
原创 Java编程思想13.4-String上的操作
第一组:转变为字符串。构造器。6个参数,2个数组,3个string打头,1个默认。valueOf。Object、数组、数组+偏移量+个数、char、int、long、float、double、boolean。第二组:String上取东西。charAt(),取字符。getChars()、getBytes()toCharArray()subString()第三组:比较
2014-12-14 17:04:11 366
原创 Java编程思想13.2-“+”与StringBuilder
1.重载的“+”与StringBuilder。虽然我们在源代码中并没有使用StringBuilder类,但是编译器却自作主张的使用了它,因为它更高效。 注意:用于String的“+”与“+=”是java 中仅有的两个重载过的操作符。而Java是不允许程序员重载任何操作符2.自己创建一个StringBuilder对象。实验表明,如果循环中,涉及过多字符串“+”操作,请自己创建一个Strin
2014-12-12 15:34:27 355
原创 Java编程思想13.1-不可变的String
0.可以证明字符串操作时计算机程序中最常见的行为。1.String对象是不可变性。查看JDK文档你就会发现,String类中每一个看起来会修改String值的 方法,实际上是创建一个全新的String对象,以包含修改后的字符串。
2014-12-12 15:33:08 407
原创 Java编程思想12.12-其他可选的方式
1.异常处理的一个重要原则是“只有你在知道如何处理的情况下才能捕获异常”。2.异常处理的一个重要目标就是把错误处理的代码同错误发生的地点相分离。3.被检查的异常。它强迫你在可能还没有准备好处理错误的时候被迫加上了catch这就导致了吞食有害的问题。
2014-12-12 15:30:35 393
原创 Java编程思想12.11-异常匹配
1.抛出异常的时候,异常处理系统会按照代码的书写顺序找出“最近”的处理程序。找到之后,就不再继续查找了。匹配时,可以是异常的基类,此时,程序就会认为已经找到最近的异常处理。
2014-12-12 15:30:10 441
原创 Java编程思想12.9-异常的限制
1.概念。当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常。不可以不在基类的异常说明列表中。2.异常限制对构造器不起作用。派生类的构造器的异常说明必须不少于基类构造器的异常说明。且派生类构造器不能捕获基类构造器抛出的异常。3.不抛出性。派生类方法可以不抛出任何异常,即使它是基类所定义的异常。4.尽管在继承过程中,编译器对异常说明所强制要求,但是异常说明本身不是方法的一部分
2014-12-12 15:29:42 673 1
原创 Java 编程思想12.10-构造器
1.对于在工作阶段要抛出的异常,并且要求清理的类,最安全的使用方法是嵌套的try子句。即:在创建一个要清理的对象之后,立即进入一个try-finally语句块。
2014-12-12 15:29:31 391
原创 Java编程思想12.8-使用finally进行清理
1.finally用来做什么。当要把内存之外的资源恢复到它们的初始状态时,就要用到finally子句。2.甚至在异常没有被当前的异常处理程序捕获的情况下,异常处理机制也会在跳到更高一层的异常处理程序之前,执行finally子句。3.在return中使用finally(太神奇了)。因为finally子句总是会执行,所以在一个方法中,可以从多个点返回,并且可以保证重要的清理工作仍然会执行。
2014-12-12 15:29:08 470
原创 Java 编程思想12.7-Java标准异常
1.Throwable这个java类被用来表示任何可以作为异常抛出的类。Exception是可以被抛出的基本类型,在java类库、用户方法以及运行时故障都可能抛出Exception型异常。所以Java程序员关心的基类型通常是Exception。2.可以不捕获的异常RuntimeException。不需要在异常说明中声明方法将抛出RuntimeException类型的异常(或者从RuntimeE
2014-12-12 15:28:03 467
原创 Java 编程思想12.6-捕获所有异常
1.可以只写一个异常处理来捕获所有类型的异常。2.栈轨迹。printStackTrace()方法提供的信息可以由getStackTrace()方法直接访问,这个方法将返回一个由栈轨迹中的元素构成的数组,其中每一个因素表示栈中的一帧。3.重抛异常会把异常抛给上一级环境中的异常处理程序,同一个try块的后续catch子句将被忽略。4.异常对象重新抛出。如果只是把当前异常对象重新抛出,那么p
2014-12-12 15:27:35 382
原创 Java 编程思想12.5-异常说明
1.异常说明使用了附加的关键字,throws,后面接一个潜在的异常类型列表。2.这种在编译时被强制检查的异常称作被检查的异常
2014-12-12 15:26:57 405
原创 Java 编程思想12.2-基本异常
1.异常情形。是指阻止当前方法或者作用域继续执行的问题。2.异常与恢复。我们在程序中可以拥有各种不同的恢复点。如果程序的某部分失败了,异常将“恢复”到程序中某个已知稳定点上。异常参数。我们只是用new在堆上创建对象,标准的异常类都有两个构造器:一个是默认构造器;另一个接受字符串作为参数,以便能够把相关信息放入异常对象的构造器。
2014-12-12 15:25:21 330
原创 Java 编程思想12通过异常处理错误12.1-概念
1.需要错误源提供某种方式,把适当的信息传递给某个接收者--该接收者就知道如何处理这个问题。2.Java 使用异常来提供一致的错误报告模型,使得构件能与客户端代码可靠的沟通问题。3.这种方式(异常)不仅可以节省代码,而且“描述正常执行过程中做什么事”的代码和“出了问题怎么办”的代码相互分离。
2014-12-12 15:25:20 358
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人