大数据文摘出品
编译:曹培信、周素云、蒋宝尚
想要真的了解深度学习,除了看视频,拿数据和算力真枪实弹的练手可能比各种理论知识更重要。
编程基础不好?不会配置环境?本地GPU太贵配置太低?训练速度达不到要求?这些可能都是阻碍你搭建第一个神经网络的原因。
谷歌开发者博客的Codelabs项目上面给出了一份教程(课程链接在文末),不只是教你搭建神经网络,还给出四个实验案例,手把手教你如何使用keras、TPU、Colab。
这个练手指南被成为“仅会一点点python也能看懂”,也就是说,基础再薄弱都可以直接了解哦。
(连python都不会的同学,文摘菌前几天发布了一个100python计划,可以先行学习了再来跟着这篇文章搭建神经网络。)
四次实验均在谷歌的Collab上运行,由浅入深、循序渐进。无需进行任何设置,可以用Chromebook打开,实验环境都帮你搭建好了。
跟着文摘菌一起,是时候搭建一个属于自己的神经网络了!
快速开启!
快速开启!
四次实验均选择TPU支持,这会使代码运行速度大大加快,毕竟用了硬件加速。
先教会你如何在Tensorflow框架下快速加载数据,然后介绍一些tf.data.Dataset的基础知识,包括eager模式以及元组数据集等。
第二部分,手把手教你实现迁移学习,把别人训练好的模型拿过来直接使用,不用一步一步搭建也能使用强大的神经网络。除了迁移学习,在这部分还会简单介绍一些必要的知识点,包括神经元、激活函数等。
第三部分,进入卷积神经网络部分,在了解卷积层、池化层、Dense层卷积网络三个必要的组件之后,你将学会使用Keras Sequential模型构建卷积图像分类器,并使用良好的卷积层选择来微调模型。
第四部分,进入到更加前沿的部分,在接受了前面三个部分的洗礼之后,在这部分你会实现在Keras中利用TPU组建现代卷积网络和实现分类。
和在Jupyter Notebook操作方式一样,同时按住键盘的Shift和enter按钮,便可以运行代码。
如果你是首次执行,需要登录Google帐户进行身份验证。注意页面提醒就可以啦~
此notebook支持目录功能,点击网页左侧的黑色箭头可以查看。
利用Colab上的TPU训练Keras模型需要输入以下代码☟
tpu = tf.contrib.cluster_resolver.TPUClusterResolver(TPU_ADDRESS)
strategy = tf.contrib.tpu.TPUDistributionStrategy(tpu)
tpu_model = tf.contrib.tpu.keras_to_tpu_model(model, strategy=strategy)
tpu_model.fit(get_training_dataset,
steps_per_epoch=TRAIN_STEPS, epochs=EPOCHS,
validation_data=get_validation_dataset, validation_steps=VALID_STEPS)
本质上是在keras中调用keras_to_tpu_model,部署额外的硬件可以通过增加训练批次的大小增加训练过程。需要注意的是目前,Keras支持仅限于8个核心或一个Cloud TPU。
注:TPU可以在神经网络运算上达到高计算吞吐量,同时能耗和物理空间都很小。因为TPU从内存加载数据。当每个乘法被执行后,其结果将被传递到下一个乘法器,同时执行加法。因此结果将是所有数据和参数乘积的和。在大量计算和数据传递的整个过程中,不需要执行任何的内存访问。
介绍完基本的操作,接下来,文摘菌带大家看看官方给出的四个实验。
Tensorflow入门:tfrecords和tf.data
Tensorflow入门:tfrecords和tf.data
此实验涉及两个tf的基础操作,一个是使用tf.data.Dataset API导入训练数据,另一个是使用TFRecord格式从GCS有效导入训练数据。
此次实验使用花卉图片的数据集,学习的目标是将其分为5种类别。使用tf.data.Dataset API 执行数据加载。
Keras和Tensorflow在其所有训练和评估功能中接受数据集。在数据集中加载数据后,API会提供对神经网络训练数据有用的所有常用功能: