[译] Keras 速查表:使用 Python 构建神经网络

栏目: Python · 发布时间: 5年前

内容简介:使用 Keras 速查表构建你自己的神经网络,便于初学者在 Python 中进行深度学习,附有代码示例Keras 是一个基于 Theano 和 TensorFlow 的易于使用且功能强大的库,它提供了一些高层的神经网络接口,用于开发和评估深度学习模型。我们最近推出了第一个使用 Keras 2.0 开发的在线交互深度学习课程,叫做“

使用 Keras 速查表构建你自己的神经网络,便于初学者在 Python 中进行深度学习,附有代码示例

Keras 是一个基于 Theano 和 TensorFlow 的易于使用且功能强大的库,它提供了一些高层的神经网络接口,用于开发和评估深度学习模型。

我们最近推出了第一个使用 Keras 2.0 开发的在线交互深度学习课程,叫做“ Deep Learning in Python ”。

现在,DataCamp 为那些已经上过这门课但仍然需要一页参考资料的人,或者那些需要一个额外的推动力才能开始学习的人,创建了 Keras 速查表。

很快,这个速查表就会让你熟悉如何从这个库中加载数据集、如何预处理数据、如何构造一个模型结构以及如何编译、训练和评估它。由于在如何搭建自己的模型上有着相当大的自由度,你会看到这个速查表展示了一些简单的关键 Keras 代码示例,只有了解这些你才能开始用 Python 搭建自己的神经网络。

此外,你还可以看到一些关于如何检查你的模型,如何保存和加载模型的示例。最后,你也会找到一些关于如何对测试数据做预测,以及如何通过调节优化参数和早停的方式来微调模型的示例。

简而言之,你会看到这个速查表并不仅仅是向你展示了使用 Keras 库在 Python 中构建神经网络的六个步骤而已。

[译] Keras 速查表:使用 Python 构建神经网络

总之,这个速查表会加快你的 Python 深度学习旅程:有了这些代码示例的帮助,你很快就可以对你的深度学习模型进行预处理、创建、检验和调优!

(点击上图下载可打印的版本,或阅读下面的在线版本)

Python 数据科学速查表:Keras

Keras 是一个基于 Theano 和 TensorFlow 的易于使用且功能强大的库,它提供了一些高层的神经网络接口,用于开发和评估深度学习模型。

一个基础例子

>>> import numpy as np
>>> from keras.models import Sequential
>>> from keras.layers import Dense
>>> data = np.random.random((1000,100))
>>> labels = np.random.randint(2,size=(1000,1))
>>> model = Sequential()
>>> model.add(Dense(32, activation='relu', input_dim=100))
>>> model.add(Dense(1, activation='sigmoid'))
>>> model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
>>>  model.fit(data,labels,epochs=10,batch_size=32)
>>>  predictions = model.predict(data)
复制代码

数据

你的数据需要以 Numpy arrays 或者 Numpy arrays 列表的格式储存。理想情况下,数据会分为训练集和测试集,你可以借助 sklearn.cross_validation 下的 train_test_split 模块来实现。

Keras 数据集

>>> from keras.datasets import boston_housing, mnist, cifar10, imdb
>>> (x_train,y_train),(x_test,y_test) = mnist.load_data()
>>> (x_train2,y_train2),(x_test2,y_test2) = boston_housing.load_data()
>>> (x_train3,y_train3),(x_test3,y_test3) = cifar10.load_data()
>>> (x_train4,y_train4),(x_test4,y_test4) = imdb.load_data(num_words=20000)
>>> num_classes = 10
复制代码

其他

>>> from urllib.request import urlopen
>>> data = np.loadtxt(urlopen("http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"),delimiter=",")
>>> X = data[:,0:8]
>>> y = data [:,8]
复制代码

预处理

序列填充

>>> from keras.preprocessing import sequence
>>> x_train4 = sequence.pad_sequences(x_train4,maxlen=80)
>>> x_test4 = sequence.pad_sequences(x_test4,maxlen=80)
复制代码

One-Hot 编码

>>> from keras.utils import to_categorical
>>> Y_train = to_categorical(y_train, num_classes)
>>> Y_test = to_categorical(y_test, num_classes)
>>> Y_train3 = to_categorical(y_train3, num_classes)
>>> Y_test3 = to_categorical(y_test3, num_classes)
复制代码

训练和测试集

>>> from sklearn.model_selection import train_test_split
>>> X_train5, X_test5, y_train5, y_test5 = train_test_split(X, y, test_size=0.33, random_state=42)
复制代码

标准化/归一化

>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(x_train2)
>>> standardized_X = scaler.transform(x_train2)
>>> standardized_X_test = scaler.transform(x_test2)
复制代码

模型结构

序贯模型

>>> from keras.models import Sequential
>>> model = Sequential()
>>> model2 = Sequential()
>>> model3 = Sequential()
复制代码

多层感知机(MLP)

二分类

>>> from keras.layers import Dense
>>> model.add(Dense(12, input_dim=8, kernel_initializer='uniform', activation='relu'))
>>> model.add(Dense(8, kernel_initializer='uniform', activation='relu'))
>>> model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
复制代码

多分类

>>> from keras.layers import Dropout
>>> model.add(Dense(512,activation='relu',input_shape=(784,)))
>>> model.add(Dropout(0.2))
>>> model.add(Dense(512,activation='relu'))
>>> model.add(Dropout(0.2))
>>> model.add(Dense(10,activation='softmax'))
复制代码

回归

>>> model.add(Dense(64, activation='relu', input_dim=train_data.shape[1]))
>>> model.add(Dense(1))
复制代码

卷积神经网路(CNN)

>>> from keras.layers import Activation, Conv2D, MaxPooling2D, Flatten
>>> model2.add(Conv2D(32, (3,3), padding='same', input_shape=x_train.shape[1:]))
>>> model2.add(Activation('relu'))
>>> model2.add(Conv2D(32, (3,3)))
>>> model2.add(Activation('relu'))
>>> model2.add(MaxPooling2D(pool_size=(2,2)))
>>> model2.add(Dropout(0.25))
>>> model2.add(Conv2D(64, (3,3), padding='same'))
>>> model2.add(Activation('relu'))
>>> model2.add(Conv2D(64, (3, 3)))
>>> model2.add(Activation('relu'))
>>> model2.add(MaxPooling2D(pool_size=(2,2)))
>>> model2.add(Dropout(0.25))
>>> model2.add(Flatten())
>>> model2.add(Dense(512))
>>> model2.add(Activation('relu'))
>>> model2.add(Dropout(0.5))
>>> model2.add(Dense(num_classes))
>>> model2.add(Activation('softmax'))
复制代码

循环神经网络(RNN)

>>> from keras.klayers import Embedding,LSTM
>>> model3.add(Embedding(20000,128))
>>> model3.add(LSTM(128,dropout=0.2,recurrent_dropout=0.2))
>>> model3.add(Dense(1,activation='sigmoid'))
复制代码

检查模型

模型输出的 shape

>>> model.output_shape
复制代码

模型描述

>>> model.summary()
复制代码

模型配置

>>> model.get_config()
复制代码

列出模型中所有的权重张量

>>> model.get_weights()
复制代码

编译模型

多层感知机(MLP)

多层感知机:二分类

>>> model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
复制代码

多层感知机:多分类

>>> model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
复制代码

多层感知机:回归

>>> model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
复制代码

循环神经网络(RNN)

>>> model3.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
复制代码

模型训练

>>> model3.fit(x_train4, y_train4, batch_size=32, epochs=15, verbose=1, validation_data=(x_test4, y_test4))
复制代码

评估你的模型表现

>>> score = model3.evaluate(x_test, y_test, batch_size=32)
复制代码

预测

>>> model3.predict(x_test4, batch_size=32)
>>> model3.predict_classes(x_test4,batch_size=32)
复制代码

保存/加载模型

>>> from keras.models import load_model
>>> model3.save('model_file.h5')
>>> my_model = load_model('my_model.h5')
复制代码

模型微调

优化参数

>>> from keras.optimizers import RMSprop
>>> opt = RMSprop(lr=0.0001, decay=1e-6)
>>> model2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
复制代码

早停

>>> from keras.callbacks import EarlyStopping
>>> early_stopping_monitor = EarlyStopping(patience=2)
>>> model3.fit(x_train4, y_train4, batch_size=32, epochs=15, validation_data=(x_test4, y_test4), callbacks=[early_stopping_monitor])
复制代码

进一步探索

从Keras 新手教程开始,您将以一种简单、循序渐进的方式学习如何探索和预处理一个关于葡萄酒质量的数据集,为分类和回归任务构建多层感知机,编译、拟合和评估模型,并对所构建的模型进行微调。

除此之外,不要错过我们的Scikit-Learn 速查表, NumPy 速查表Pandas 速查表

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。

掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能 等领域,想要查看更多优质译文请持续关注 掘金翻译计划 、官方微博、 知乎专栏


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图说区块链

图说区块链

徐明星、田颖、李霁月 / 中信出版社 / 2017-7-1 / 59.00元

区块链,如瑞士仪表般精密,如互联网般惊世骇俗,它在以神一般的节奏颠覆社会。 当新兴技术来临时,你可以选择规避——如果明天也可以规避的话。区块链也一样。 作为一个现象级概念,金融科技创新在过去几年迎来了奇点式发展。其中最引人注目的当属区块链技术。区块链技术正在动摇全球金融基础设施,它是全球顶级银行和其他金融机构重点追逐的领域。毫无疑问,区块链是未来5年最有前景的行业之一。 《图说区......一起来看看 《图说区块链》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具