• 实现属于自己的TensorFlow(二) – 梯度计算与反向传播

    Posted by : lon.y@qq.com on 2018年2月5日

    前言 上一篇中介绍了计算图以及前向传播的实现,本文中将主要介绍对于模型优化非常重要的反向传播算法以及反向传播算法中梯度计算的实现。因为在计算梯度的时候需要涉及到矩阵梯度的计算,本文针对几种常用操作的梯度计算和实现进行了较为详细的介绍。如有错误欢迎指出。 首先先简单总结一下, 实现反向传播过程主要就是完成两个任务: 实现不同操作输出对输入的梯度计算 实现根据链式法则计算损失函数对不同节点的梯度计算 再附上SimpleFlow的代码地址: https://gi

    阅读全文...

  • 15 分钟用 ML 破解一个验证码系统

    Posted by : lon.y@qq.com on 2018年1月30日

    人人都恨验证码——那些恼人的图片,显示着你在登陆某网站前得输入的文本。设计验证码的目的是,通过验证你是真实的人来避免电脑自动填充表格。但是随着深度学习和计算机视觉的兴起,现在验证码常常易被攻破。 我拜读了 Adrian Rosebrock 写的《Deep Learning for Computer Vision with Python》。在书中,Adrian 描述了他是怎样用机器学习绕过纽约 E-ZPass 网站上的验证码: Adrian 无法接触到该应用

    阅读全文...

  • 实现属于自己的TensorFlow(一) – 计算图与前向传播

    Posted by : lon.y@qq.com on 2018年1月30日

    前段时间因为课题需要使用了一段时间TensorFlow,感觉这种框架很有意思,除了可以搭建复杂的神经网络,也可以优化其他自己需要的计算模型,所以一直想自己学习一下写一个类似的图计算框架。前几天组会开完决定着手实现一个模仿TensorFlow接口的简陋版本图计算框架以学习计算图程序的编写以及前向传播和反向传播的实现。目前实现了前向传播和反向传播以及梯度下降优化器,并写了个优化线性模型的例子。 代码放在了GitHub上,取名SimpleFlow, 仓库链接: 

    阅读全文...

  • 码农不识贝叶斯,虽知数据也枉然

    Posted by : lon.y@qq.com on 2017年12月28日

    数据的重要性毋庸置疑,但是如何让数据产生价值呢? 对一个全栈老码农而言,经常在开发或者研发管理的时候遇到各种预测、决策、推断、分类、检测、排序等诸多问题。面对“你的代码还有 bug 么?”这样的挑战,一种理智的回答是,我们已经执行了若干测试用例,代码中存在bug的可能性是百分之零点几。也就是说,我们对当前程序中没有bug的信心是百分之九十九点几。这实际上就是一直贝叶斯思维,或者说使用了贝叶斯方法。不论我们看到,还是没有看到,它都在那里,熠熠生辉。 如果预测

    阅读全文...

  • 使用Python开始机器学习

    Posted by : lon.y@qq.com on 2017年12月27日

    目前机器学习红遍全球。男女老少都在学机器学习模型,分类器,神经网络和吴恩达。你也想成为一份子,但你该如何开始? 在这篇文章中我们会讲Python的重要特征和它适用于机器学习的原因,介绍一些重要的机器学习包,以及其他你可以获取更详细资源的地方。 为什么用Python做机器学习 Python很适合用于机器学习。首先,它很简单。如果你完全不熟悉Python但是有一些其他的编程经验(C或者其他编程语言),要上手是很快的。其次,Python的社区很强大。这使得Pyt

    阅读全文...

  • Ruby 和 Python 分析器是如何工作的?

    Posted by : lon.y@qq.com on 2017年12月25日

    你好! 我作为一名编写Ruby profiler的先驱,我想对现有的Ruby和Python profiler如何工作进行一次调查。 这也有助于回答很多人的问题:“你怎么写一个profiler?” 在这篇文章中,我们只关注CPUprofiler(而不是内存/堆profiler)。 我将解释一些编写profiler的一般基本方法,给出一些代码示例,以及大量流行的Ruby和Pythonprofiler的例子,并告诉你它们是如何工作的。 在这篇文章中可能会有一些错

    阅读全文...

  • Python Django 性能测试与优化指南

    Posted by : lon.y@qq.com on 2017年12月20日

    唐纳德·克努特(Donald Knuth)曾经说过:“不成熟的优化方案是万恶之源。”然而,任何一个承受高负载的成熟项目都不可避免地需要进行优化。在本文中,我想谈谈优化Web项目代码的五种常用方法。虽然本文是以Django为例,但其他框架和语言的优化原则也是类似的。通过使用这些优化方法,文中例程的查询响应时间从原来的77秒减少到了3.7秒。 本文用到的例程是从一个我曾经使用过的真实项目改编而来的,是性能优化技巧的典范。如果你想自己尝试着进行优化,可以在Git

    阅读全文...

  • 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码

    Posted by : lon.y@qq.com on 2017年12月15日

    程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA。可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广,作为一个Python程序员,自然最关心的是下面这幅图啦 我们项目组一值使用Python2.7,虽然我们也知道Python3的诸多好处,也曾经蠢蠢欲动过,但由于各种历史原因,以及业务的压力,我们只可能继续使用Python2.7。更悲哀的是,我们组不是那么international,所以代码中还是涉及到大量的中文,因此偶尔也会遇到乱码以

    阅读全文...

  • 让 Python 更加充分的使用 Sqlite3

    Posted by : lon.y@qq.com on 2017年12月2日

    我最近在涉及大量数据处理的项目中频繁使用 sqlite3。我最初的尝试根本不涉及任何数据库,所有的数据都将保存在内存中,包括字典查找、迭代和条件等查询。这很好,但可以放入内存的只有那么多,并且将数据从磁盘重新生成或加载到内存是一个繁琐又耗时的过程。 我决定试一试sqlite3。因为只需打开与数据库的连接,这样可以增加可处理的数据量,并将应用程序的加载时间减少到零。此外,我可以通过 SQL 查询替换很多Python逻辑语句。 我想分享一些关于这次经历的心得和

    阅读全文...

  • 从 Zero 到 Hero ,一文掌握 Python

    Posted by : lon.y@qq.com on 2017年11月29日

    第一个问题,什么是 Python ?根据 Python 之父 Guido van Rossum 的话,Python 是: 一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法。 对于我来说,学习 Python 的首要原因是,Python 是一种可以优雅编程的语言。它能够简单自然地写出代码和实现我的想法。 另一个原因是我们可以将 Python 用在很多地方:数据科学、Web 开发和机器学习等都可以使用 Python 来

    阅读全文...