零基础从20到25的深度学习之路

这是一个系列的文章,讲述了一个工程师从零自学深度学习的过程。希望能和大家共同入门深度学习,然后
慢慢积累1W小时成为大师。


1.为啥要转机器学习?
先搞清楚为啥要学这玩意,才能更好的义无反顾的投身到机器学习的道路上。
笔者现任职于顺风科技,作为一名普通的大数据开发工程师,深感大数据开发很容易被取代(java工程师经过简单的自学很容易转行大数据开发工程师),所以立志转行机器学习工程师。只有不容易被取代,你才有更大的存在的价值,也才能变得更值钱。


2.几个和机器学习有关的关键词
人工智能、机器学习、深度学习、tensorflow和Keras
为啥要用人工智能?
人希望计算机能帮咱们做一些重复性的工作。对于一些简单的,比如算一下一部电影里面有多少个单词,计算机很容易做到。
但是如果让计算机识别这部电影是啥类型的(爱情、动作、恐怖..),对于咱们人来说看一会大概就知道了,但是对于计算机就很难。
人工智能就是干这个事的。这事算一种图像识别,而图像识别就是人工智能要解决的一个问题。


机器学习和人工智能啥关系?
机器学习是搞定人工智能问题的一个很有效的方法。


那深度学习又是啥?
深度学习算是机器学习的一个分支吧。可以这么理解,机器学习分为传统机器学习和深度学习。而深度学习其实就是想办法让计算机能够像人类的大脑一样去学习,然后解决问题的一种技术。


那tensorflow又是啥?
深度学习是一门比较难的技术,所以我们选择用牛逼的人或者公司的成果去快速的解决问题。而tensorflow就是谷歌内部用的深度学习计算框架,因为开源了,所以大家都能用。目前也最火,所以咱们用tensorflow框架来深度学习。


Keras又是啥?
就算tensorflow框架已经开源了,但是还是有点难。咱们想着能不能更快的用这个框架。然后Keras出现了,Keras其实就是对tensorflow包装了一层,是一个高层的深度学习的API。用了Keras,我们能更快的入门深度学习。


搞清楚这几个关键词,大概知道是做啥的,然后再去百度下加深印象。


3.入手一个可运行的深度学习的小demo。


import numpy as np
np.random.seed(1337)  # for reproducibility
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import RMSprop


# download the mnist to the path '~/.keras/datasets/' if it is the first time to be called
# X shape (60,000 28x28), y shape (10,000, )


f  = np.load('D:\PycharmProjects\myownPythonProject\handwritingRecognize\mnist.npz')
x_train, y_train = f['x_train'], f['y_train']
x_test, y_test = f['x_test'], f['y_test']
f.close()
(X_train, y_train), (X_test, y_test) = (x_train, y_train), (x_test, y_test)


# data pre-processing
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)


# Another way to build your neural net
model = Sequential([
    Dense(32, input_dim=784),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])


# Another way to define your optimizer
rmsprop = RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)


# We add metrics to get more results you want to see
model.compile(optimizer=rmsprop,
              loss='categorical_crossentropy',
              metrics=['accuracy'])


print('Training ------------')
# Another way to train the model
model.fit(X_train, y_train, epochs=2, batch_size=32)


print('\nTesting ------------')
# Evaluate the model with the metrics we defined earlier
loss, accuracy = model.evaluate(X_test, y_test)


print('test loss: ', loss)
print('test accuracy: ', accuracy)

猜你喜欢

转载自blog.csdn.net/abc50319/article/details/80946300