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做深度学习入门教程 | 资源