Tensorflow 2.0—— 跟着官方demo学习Tensorflow 2.0框架基本API和用法

Posted 玛丽莲茼蒿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow 2.0—— 跟着官方demo学习Tensorflow 2.0框架基本API和用法相关的知识,希望对你有一定的参考价值。

前言

同样的,对于新框架的学习直接看官网!!

TensorFlow Core不论您是机器学习新手还是专家,都可使用完整的端到端示例了解如何使用 TensorFlow。请试用 Google Colab 中的教程 - 无需进行任何初始设置。https://tensorflow.google.cn/tutorials?hl=zh_cn官网提供的是Jupyter 笔记本格式的教程,能够一段一段的边看边运行,可惜Jupyter服务器在国外,所以国内没法运行。那就直接看好了。

一、针对新手的damo

初学者的 TensorFlow 2.0 教程  |  TensorFlow Corehttps://tensorflow.google.cn/tutorials/quickstart/beginner?hl=zh_cn1. 下载并安装 TensorFlow 2.0 测试版包。将 TensorFlow 载入你的程序:

# 安装 TensorFlow

import tensorflow as tf

2. 载入并准备好 Keras自带的MNIST 数据集。将样本从整数转换为浮点数:

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

3. 将模型的各层堆叠起来,以搭建 tf.keras.Sequential 模型。为训练选择优化器和损失函数:

model = tf.keras.models.Sequential([  # 定义模型网络结构
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',  # 定义模型优化器
              loss='sparse_categorical_crossentropy',  # 定义模型loss函数
              metrics=['accuracy'])  # 定义模型的指标

4. 训练并验证模型:

model.fit(x_train, y_train, epochs=5)  # 5轮

model.evaluate(x_test,  y_test, verbose=2)

5. 训练结果

现在,这个照片分类器的准确度已经达到 98%。

二、进阶demo

针对专业人员的 TensorFlow 2.0 入门  |  TensorFlow Corehttps://tensorflow.google.cn/tutorials/quickstart/advanced?hl=zh_cn2.2 tensorflow2官方demo_哔哩哔哩_bilibiliTensorflow2官方demo,手写数字的识别https://www.bilibili.com/video/BV1n7411T7o6?spm_id_from=333.999.0.01. 注意在TensorFlow中,tensor的通道排序和pytorch有所不同。

       1)TensorFlow tensor: [batch, height, width, channel]

        2)Pytorch tensor:  [batch,channel, height, width]

2. 这个demo分为model.py和train.py两个脚本。

2.1 model.py

1. 模型的搭建风格:使用Model Subclassing API,类似于pytorch的一种风格。

2. 我们自己构造的MyModel类集成了keras的Model类

    搭建网络用的Dense、Flatten、Conv2D函数来自keras的layers类

from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model

3. 搭建 

class MyModel(Model):
  def __init__(self):
    super(MyModel, self).__init__() 
    self.conv1 = Conv2D(32, 3, activation='relu')
    self.flatten = Flatten()
    self.d1 = Dense(128, activation='relu')  # 全连接层
    self.d2 = Dense(10)  # 全连接层

  # 定义网络正向传播的过程
  def call(self, x):  
    x = self.conv1(x)
    x = self.flatten(x)
    x = self.d1(x)
    return self.d2(x)

# Create an instance of the model
model = MyModel()

        1)super函数:避免多继承带来的问题 

        2)Conv2D函数,我们来看一下它的参数

        

        这里要注意padding的使用方式和pytorch不同。padding参数由两种值“valid”和“same”。默认“valid”。valid表示不需要补0,same表示需要补0. 计算公式如下:

          

        3)Faltten函数:展平

        4)Dense函数的参数,比较重要的就是前两个参数 

        ​​​​​​​        

        5)和pytorch的另一个区别:上面用到的Conv2D、Dense、Faltten函数的参数中没有指定input是什么。因为TensorFlow会自动进行推理。

2.2 train.py

更新中。。。

以上是关于Tensorflow 2.0—— 跟着官方demo学习Tensorflow 2.0框架基本API和用法的主要内容,如果未能解决你的问题,请参考以下文章

官方解读:TensorFlow 2.0中即将到来的所有新特性

研究生官方推荐!用TensorFlow 2.0做深度学习入门教程 | 资源

解析Tensorflow官方English-Franch翻译器demo

解读:TensorFlow 2.0中即将到来的所有新特性

三分钟快速上手TensorFlow 2.0 再学习总结回顾

详解深度强化学习展现TensorFlow 2.0新特性(代码)