[译] 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前端后端区块链产品设计人工智能 等领域,想要查看更多优质译文请持续关注 掘金翻译计划 、官方微博、 知乎专栏


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

查看所有标签

猜你喜欢:

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

云攻略

云攻略

马克·贝尼奥夫、卡莱尔·阿德勒 / 徐杰 / 海天出版社 / 2010年8月 / 36.00元

Apple、Google、甲骨文、腾讯 都已投入了云的怀抱, 你还在等什么? 快来加入我们! 最初,Salesforce.com 只是一间小小的租赁公寓 在短短10年内 它已成长为 世界上发展最快、最具创新力的 产业变革领导者 曾经,这是个软件为王的时代。 现在,这是个云计算的新时代。 NO SOFTWARE 抛弃软件的......一起来看看 《云攻略》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码