带你少走弯路:强烈推荐的Keras快速入门资料和翻译(可下载)
- 2019 年 10 月 28 日
- 笔记
上次写了TensorFlow和PyTorch的快速入门资料,受到很多好评,读者强烈建议我再出一个keras的快速入门路线,经过翻译和搜索网上资源,我推荐4份入门资料,希望对大家有所帮助。
备注:另外两个入门资料
很负责任地说:看完这些资料,Keras基本入门了,接下来碰到问题能自己查资料解决了!(本文作者:黄海广)
推荐资料
1.《python深度学习》及中文注释的代码
TensorFlow团队的Josh Gordon推荐这本书,TF2.0基于Keras。如果你是一个深度学习新手,最好从这本书入手。当然这本书里的代码需要改一下,但非常简单:
import keras -> from tensorflow import keras
作者在github公布了代码,代码几乎囊括了本书所有知识点。在学习完本书后,读者将具备搭建自己的深度学习环境、建立图像识别模型、生成图像和文字等能力。但是有一个小小的遗憾:代码的解释和注释是全英文的,即使英文水平较好的朋友看起来也很吃力。
本站认为,这本书和代码是初学者入门深度学习及Keras最好的工具。
黄海广对全部代码做了中文解释和注释,并下载了代码所需要的一些数据集(尤其是“猫狗大战”数据集),并对其中一些图像进行了本地化,代码全部测试通过。(请按照文件顺序运行,代码前后有部分关联)。
以下代码包含了全书80%左右的知识点,代码目录:
- 2.1: A first look at a neural network( 初识神经网络)
- 3.5: Classifying movie reviews(电影评论分类:二分类问题)
- 3.6: Classifying newswires(新闻分类:多分类问题 )
- 3.7: Predicting house prices(预测房价:回归问题)
- 4.4: Underfitting and overfitting( 过拟合与欠拟合)
- 5.1: Introduction to convnets(卷积神经网络简介)
- 5.2: Using convnets with small datasets(在小型数据集上从头开始训练一个卷积
- 5.3: Using a pre-trained convnet(使用预训练的卷积神经网络)
- 5.4: Visualizing what convnets learn(卷积神经网络的可视化)
- 6.1: One-hot encoding of words or characters(单词和字符的 one-hot 编码)
- 6.1: Using word embeddings(使用词嵌入)
- 6.2: Understanding RNNs(理解循环神经网络)
- 6.3: Advanced usage of RNNs(循环神经网络的高级用法)
- 6.4: Sequence processing with convnets(用卷积神经网络处理序列)
- 8.1: Text generation with LSTM(使用 LSTM 生成文本)
- 8.2: Deep dream(DeepDream)
- 8.3: Neural style transfer( 神经风格迁移)
- 8.4: Generating images with VAEs(用变分自编码器生成图像)
- 8.5: Introduction to GANs(生成式对抗网络简介)
中文注释与解释如图:
图:代码的中文注释与解释
作者的github:
https://github.com/fchollet/deep-learning-with-python-notebooks
中文注释代码:
https://github.com/fengdu78/machine_learning_beginner/tree/master/deep-learning-with-python-notebooks
2.keras的样例代码
资源地址:
https://github.com/erhwenkuo/deep-learning-with-keras-notebooks
资源介绍:
这个github的repository主要是ErhWen Kuo在学习Keras的一些记录及练习。希望在学习过程中发现到一些好的信息与示例也可以对想要学习使用Keras来解决问题的同学带来帮助。这些notebooks主要是使用Python 3.6与Keras 2.1.1版本跑在一台配置Nivida 1080Ti的Windows 10的机台所产生的结果,但有些部份会参杂一些Tensorflow与其它的函式库的介绍。
配置环境:
python 3.6以上,Keras 2.1.1
资源目录:
0.图象数据集/工具介绍
- 0.0: COCO API解说与简单示例
- 0.1:土炮自制扑克牌图象数据集
- 0.2:使用Pillow来进行图像处理
1.Keras API示例
- 1.0:使用图像增强来进行深度学习
- 1.1:如何使用Keras函数式API进行深度学习
- 1.2:从零开始构建VGG网络来学习Keras
- 1.3:使用预训练的模型来分类照片中的物体
- 1.4:使用图像增强来训练小数据集
- 1.5:使用预先训练的卷积网络模型
- 1.6:卷积网络模型学习到什么的可视化
- 1.7:构建自动编码器(Autoencoder)
- 1.8:序列到序列(Seq-to-Seq)学习介绍
- 1.9: One-hot编码工具程序介绍
- 1.10:循环神经网络(RNN)介绍
- 1.11: LSTM的返回序列和返回状态之间的区别
- 1.12:用LSTM来学习英文字母表顺序
2.图像分类(Image Classification)
- 2.0: Julia(Chars74K)字母图像分类
- 2.1:交通标志图像分类
- 2.2:辛普森卡通图像角色分类
- 2.3:时尚服饰图像分类
- 2.4:人脸关键点辨识
- 2.5: Captcha验证码分类
- 2.6: Mnist手写图像分类(MLP)
- 2.7: Mnist手写图像分类(CNN)
3.目标检测(Object Recognition)
- 3.0: YOLO目标检测算法概念与介绍
- 3.1: YOLOv2目标检测示例
- 3.2:浣熊(Racoon)检测-YOLOv2模型训练与调整
- 3.3:浣熊(Racoon)检测-YOLOv2模型的使用
- 3.4:袋鼠(Kangaroo)检测-YOLOv2模型训练与调整
- 3.5:双手(Hands)检测-YOLOv2模型训练与调整
- 3.6:辛普森卡通图象角色(Simpson)检测-YOLOv2模型训练与调整
- 3.7: MS COCO图象检测-YOLOv2模型训练与调整
4.物体分割(Object Segmentation)
5.关键点检测(Keypoint Detection)
6.图象标题(Image Caption)
7.人脸检测识别(Face Detection/Recognition)
- 7.0:人脸检测- OpenCV(Haar特征分类器)
- 7.1:人脸检测- MTCNN(Multi-task Cascaded Convolutional Networks)
- 7.2:人脸识别-脸部检测、对齐&裁剪
- 7.3:人脸识别-人脸部特征提取&人脸分类器
- 7.4:人脸识别-转换、对齐、裁剪、特征提取与比对
- 7.5:脸部关键点检测(dlib)
- 7.6:头部姿态(Head pose)估计(dlib)
8.自然语言处理(Natural Language Processing)
- 8.0:词嵌入(word embeddings)介绍
- 8.1:使用结巴(jieba)进行中文分词
- 8.2: Word2vec词嵌入(word embeddings)的基本概念
- 8.3:使用结巴(jieba)进行歌词分析
- 8.4:使用gensim训练中文词向量(word2vec)
3.keras的官方样例
资源地址:
https://github.com/keras-team/keras/tree/master/examples
资源介绍:
这个github是Keras的官方例子,包含了CV、NLP、生成模型以及一些通用的函数代码,可以说是教科书式的,拿过来改下输入输出就能用,非常方便。
4.keras的预训练模型
资源地址:
https://github.com/fchollet/deep-learning-models
这个仓库是keras的作者建立的,包含的预训练的 Keras 模型:
- VGG16
- VGG19
- ResNet50
- Inception v3
- CRNN for music tagging 样例说明:
图像分类代码
from resnet50 import ResNet50 from keras.preprocessing import image from imagenet_utils import preprocess_input, decode_predictions model = ResNet50(weights='imagenet') img_path = 'elephant.jpg' img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = model.predict(x) print('Predicted:', decode_predictions(preds)) # print: [[u'n02504458', u'African_elephant']]
总结
看完这些资料,Keras基本入门了,接下来碰到问题能自己查资料解决了!