一年时间学机器学习

img

大家都知道 AI 的发展前景非常好,例如 Google 成为了一家 AI First 的企业,越来越多的开发者开始关注并学习机器学习。因此,po 主特意找来这篇文章,分享下如何寻找适合入门者的在线学习资源,如 Udacity、Coursera、斯坦福大学课程等,并告诉大家如何避免其中的一些坑。

这篇文章来自 Per Harald Borgen,在 Medium 上获得了 2.7k 的赞。

这位大大最初在 Hacker News 上了解并对机器学习产生兴趣,然后花费了近一年时间,从入门机器学习到在实际项目中应用。期间利用 Udacity、Coursera、Kaggle竞赛、斯坦福大学课程等多种资源来进行学习和训练,也踩了不少坑。

下面是正文。

入门:Hacker News (黑客新闻)和 Udacity (优达学城)

我对机器学习的兴趣开始于 2014 年。那时候我刚开始在 Hacker News 上阅读有关它的一些文章。然后我就发现通过检测数据来教会机器做一些事情,这种想法十分有趣。当时的我甚至连一个专业的开发员都不算,只能算是一个业余编码员,但我还是想试一试。

所以我就开始看 Udacity 的监督学习课程的前几章,并同时开始阅读有关这方面的所有文章。

从0到1:我是如何在一年内无师自通机器学习的?

尽管没有掌握到实践技能,但我还是对机器学习的概念有了一定的认识。但由于我很少听大规模在线开放课程,所以并没有听完。

“成功”挂掉Coursera 机器学习课程

2015 年 1 月,我参加了伦敦的“创始人和程序员”训练营地(FAC bootcamp),想成为一名程序员。几周过后,我想学习如何码机器学习算法,于是我就和几个同伴成立了一个学习小组。每周二晚上,我们都会在 Coursera 上观看机器学习课程。

从0到1:我是如何在一年内无师自通机器学习的?

这个课程很棒,我也学到了很多。但是对于一个初学者来说,课程内容太难,因此我必须要一遍遍反复观看才能掌握要点。

与此同时, Octave 编码任务也同样十分具有挑战性,尤其是如果你不了解 Octave 的话。后来,因为难度太大,小伙伴们一个个都放弃了,再后来,我自己也最终放弃了。

事后,我意识到,我应该找一个适合我的课程来听。要么是用机器学习图书馆来进行编码任务,而不是从头创建算法,又或者至少是用我了解的编程语言。

对于新手来说,学习一门新的语言,并同时编码机器学习算法,实在是太难了。

如果我及时发现的话,我会选择 Udacity 的《机器学习介绍》这门课程,因为它更加简单并且采用 Python 和 Scikit 学法。用这种方法,我们可以尽快上手,获得自信,同时也更加有趣。


linux 批量将 webp 转换为 jpg

背景

自己的blog有一些图片是转载的其他的blog的,有些blog的文章比较奇怪,没有后缀名!通过上一篇的方式,我找出了这种图格式是 webp。这一篇在之前的基础上,我完成了一个脚本将webp批量转换为 jpg 图片格式。

脚本下载地址:https://gist.github.com/kelvinblood/0350f50be92ccbd5036ded07980653ea

WebP是什么

目前对于JPEG、PNG、GIF等常用图片格式的优化已几乎达到极致,因此Google于2010年提出了一种新的图片压缩格式 — WebP,给图片的优化提供了新的可能。

WebP为网络图片提供了无损和有损压缩能力,同时在有损条件下支持透明通道。据官方实验显示:无损WebP相比PNG减少26%大小;有损WebP在相同的SSIM(Structural Similarity Index,结构相似性)下相比JPEG减少25%~34%的大小;有损WebP也支持透明通道,大小通常约为对应PNG的1/3。

同时,谷歌于2014年提出了动态WebP,拓展WebP使其支持动图能力。动态WebP相比GIF支持更丰富的色彩,并且也占用更小空间,更适应移动网络的动图播放。

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都相当优秀、稳定和统一。

转换

参考文档:Linux: How to Convert WEBP to JPG

By Xah Lee. Date: 2016-10-11.

安装

# debian install webp
sudo apt-get install webp

安装后得到如下命令工具:

  • cwebp → WebP encoder tool
  • dwebp → WebP decoder tool
  • vwebp → WebP file viewer
  • webpmux → WebP muxing tool
  • gif2webp → Tool for converting GIF images to WebP

WebP -> JPG

先使用 dwebp 将 webp 转化为png格式。


linux 判断图片格式

背景

自己的blog有一些图片是转载的其他的blog的,有些blog的文章比较奇怪,没有后缀名!这种图片在电脑浏览器显示无压力,但是到了手机上往往无法显示。于是这一篇介绍linux下如何识别图片格式。下一篇介绍如何批量转换图片格式。

知识点

文件头

文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。

当文件都使用二进制流作为传输时,需要制定一套规范,用来区分该文件到底是什么类型的。 文件头有很多个,这里就介绍几个跟图片相关的文件头。

  • JPEG (jpg),文件头:FFD8FF
  • PNG (png),文件头:89504E47
  • GIF (gif),文件头:47494638
  • RAR Archive (rar),文件头:52617221
  • WebP : 524946462A73010057454250

写脚本

针对这些文件头,写了这个脚本进行判断:

#!/bin/bash

if [ $# != 1 ]; then
  echo "parameter error"
else
  len3=`xxd -p -l 3 $1`
  len4=`xxd -p -l 4 $1`

  if [ $len3 == "ffd8ff" ]; then
    echo "The type is jpg"
  elif [ $len4 == "89504e47" ]; then
    echo "The type is png"
  elif [ $len4 == "47494638" ]; then
    echo "The type is gif"
  elif [ $len4 == "52494646" ]; then
    echo "The type is webp"
  elif [ $len4 == "52617221" ]; then
    echo "The type is rar"
  else
    echo "The type is others"
    echo $len4
  fi

fi

运行后即可查看图片格式,例如:

./judgeImage.sh amadeus2.gif
The type is gif

Windows 局域网互传 - 知乎

来自Pjer 的答案。最近在局域网交换文件用到的。

最方便快捷的同时快速的方案应该是【windows 局域网共享】

img

我之前也是苦于寻找一种PC之间大文件快速交换的解决方案,因为实验室的笔记本和主机都是有生产力电脑,所以需要经常传文件,而且经常很大,移动硬盘拷贝写入大概80M/s读取稍快一些综合起来USB3.0不计插拔时间平均大概是45M/s其实已经很棒了,但是移动硬盘是用来备份的经常高强度读写很容易GG

如果恰好有个像样点的路由器【某宝上随便找个“千兆”路由器都成】两台电脑都在插路由器上,似乎在平常的办公环境下这个条件很好满足),然后都打开局域网共享

具体路径是: Control Panel>Network and Internet>Network and Sharing Center>Advanced sharing settings

img

像这样

然后在文件管理器侧边栏里:

img

的NetWork目录下可以相互找到,如果觉得不安全的话设个授权就成。然后可以像访问本底目录一样访问另一台电脑目录,而且文件是可以打开的,电影可以播放,文档可以编辑,贼方便。

img

传送大文件的话速度取决于路由器带宽决定,因为是内网直传,硬盘允许的情况下可以打满带宽,比如说:

img


Mac 更改默认的截图文件格式 - 少数派

我属于对截图格式不敏感的那部分人。然而 png 格式对于我这种写 blog 的人来说,还是太大了,所以转载了这篇做个备忘。原文地址为:https://sspai.com/post/26321,以下是原文:

我在 之前一篇文章 详细地讲解了如何在 OS X 上玩转截图,尤其是使用快捷键组合,方便至极。要知道,Mac OS X 默认的截图文件格式为「.png」。这一格式非常棒,图片质量非常高,还可以包含透明背景,但是往往这一格式的图片文件相对于其他常见的图片文件格式来说,体积有点大。

虽然你可以利用 Mac 自带的「预览」应用程序或第三方的图像编辑应用程序将「.png」格式图片转换为「.jpg」等格式图片,但是我觉得还是繁琐了点,能不能直接改变截图生成的图片文件格式呢?

注: OS X 默认识别以下图片格式:「.jpg」「.gif」「.pdf」「.png」和「.tiff」,所以你可以设置截图文件格式为上述 5 种。

想要改变 Mac OS X 默认的截图文件格式,我们需要使用到「终端」应用程序。 步骤非常简单,只需要打开「终端」,然后在窗口中输入相关命令,按下「回车」键即可。

1. 设置截图文件的格式为「.jpg」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type jpg;killall SystemUIServer

2. 设置截图文件的格式为「.gif」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type gif;killall SystemUIServer

3. 设置截图文件的格式为「.pdf」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type PDF;killall SystemUIServer

4. 设置截图文件的格式为「.png」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type png;killall SystemUIServer

5. 设置截图文件的格式为「.tiff」

在「终端」应用程序窗口内键入或粘贴以下命令并按下「回车」键执行:

defaults write com.apple.screencapture type tiff;killall SystemUIServer