摘要:这是一个系列的文章,讲述了一个工程师从零自学深度学习的过程。希望能和大家100小时入门深度学习,然后慢慢积累10000小时成为大师。这篇讲讲为啥要学习深度学习,再引入一个可运行的demo。
1.为啥要转机器学习?先搞清楚为啥要学这玩意,才能更好的义无反顾的投身到机器学习的道路上。笔者现任职于顺风科技,作为一名普通的大数据开发工程师,深感大数据开发很容易被取代(java工程师经过简单的自学很容易转行大数据开发工程师),所以立志转行机器学习工程师。
只有不容易被取代,你才有更大的存在的价值,也才能变得更值钱。
2.几个和机器学习有关的关键词人工智能、机器学习、深度学习、tensorflow和Keras
(1) 为啥要用人工智能?人希望计算机能帮咱们做一些重复性的工作。对于一些简单的,比如算一下一部电影里面有多少个单词,计算机很容易做到。但是如果让计算机识别这部电影是啥类型的(爱情、动作、恐怖..),对于咱们人来说看一会大概就知道了,但是对于计算机就很难。人工智能就是干这个事的。这事算一种图像识别,而图像识别就是人工智能要解决的一个问题。
(2) 机器学习和人工智能啥关系?机器学习是搞定人工智能问题的一个很有效的方法。
(3) 那深度学习又是啥?深度学习算是机器学习的一个分支吧。可以这么理解,机器学习分为传统机器学习和深度学习。而深度学习其实就是想办法让计算机能够像人类的大脑一样去学习,然后解决问题的一种机器学习技术。
(4) 那tensorflow又是啥?深度学习是一门比较难的技术,所以我们选择用牛逼的人或者公司的成果去快速的解决问题。而tensorflow就是谷歌内部用的深度学习计算框架,因为开源了,所以大家都能用。目前也最火,所以咱们用tensorflow框架来深度学习。
(5) Keras又是啥?就算tensorflow框架已经开源了,但是还是有点难。咱们想着能不能更快的用这个框架。然后Keras出现了,Keras其实就是对tensorflow包装了一层,是一个高层的深度学习的API。用了Keras,我们能更快的入门深度学习。
搞清楚这几个关键词,大概知道是做啥的,然后再去百度下加深印象。
总结下:我们用机器学习去解决人工智能存在的问题,深度学习是机器学习里面比较火的一个分支,tensorflow是google开源的比较牛逼的深度学习框架,而Keras则让深度学习变得更加简单入门。
3.入手一个可运行的深度学习Keras的小demo。
现在有个图像识别项目的需求:
我们想写个程序,来识别图片上的到底是啥数字。就像上面图片,有很多很多手写的图片,我们要做出一个模型,让计算机看一张图片就知道上面是数字几。对于人来说,那太容易了,但是对于计算机来说就有点难了。通常的做法就是我们找来很多的数据集,将这些数据集分成两部分,一部分拿来训练,一部分拿来测试咱们的程序识别的准不准。
机器学习项目一般包含以下几个固定的套路:
Step1:数据采集。我们会收集很多很多的手写数字数据。通常情况下,数据越多,质量越高,你的模型效果就越好。
Step2:数据预处理。我们会将收集到的手写图片进行预处理,转化成统一的格式,这样会方面咱们模型的输入。比如下面的程序里面的 minst数据集就是一张一张的28*28 像素的图片。大家可以了解下mnist数据集,可以方便我们学习模型,而不用花过多的时间去找数据。
Step3:模型训练。数据找到了,并且经过预处理成了咱们理想的格式,下面就是用深度学习的方法去训练咱们的模型。
Step4:模型验证。前面咱们用训练集来训练数据,现在用测试集来试试咱们的模型到底好用不好用。用咱们的模型去识别下图片,看看能不能判断是哪个数字,识别的准确率高不高。
Step5:模型优化。根据验证的结果,来判断模型的优劣,然后不断完善。
[mw_shl_code=python,true]#导入相关的包
import numpy as np
np.random.seed(1337) # for reproducibility
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import RMSprop
# step1 数据采集。下载minst的数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# step2 数据预处理
X_train = X_train.reshape(X_train.shape[0], -1) / 255. # normalize
X_test = X_test.reshape(X_test.shape[0], -1) / 255. # normalize
y_train = np_utils.to_categorical(y_train, num_classes=10)
y_test = np_utils.to_categorical(y_test, num_classes=10)
model = Sequential([
Dense(32,input_dim=784),
Activation('relu'),
Dense(10),
Activation('softmax'),
])
rmsprop = RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
model.compile(optimizer=rmsprop,loss='categorical_crossentropy',metrics=['accuracy'])
print('Training ------------')
# step3 开始训练模型
model.fit(X_train, y_train, epochs=2, batch_size=32)
print('\nTesting ------------')
# step4 验证模型
loss, accuracy = model.evaluate(X_test, y_test)
print('test loss: ', loss)
print('test accuracy: ', accuracy)
# step5 根据训练结果,来优化模型。[/mw_shl_code]
结尾:下一个教程我们会好好剖析这个demo,然后一步一步看深度学习怎么像人类一样去识别这张图片到底是数字几的。
下一篇
零基础从20K到25K的深度学习之路--2 实战第一个深度学习模型
各位老铁们,回帖有奖励:
回帖百度云免费分享一套深度学习教程。
啦啦啦啦啦