Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TensorFlow 2.0 Tutorial: 4 - 几个常用技术

TensorFlow 2.0 Tutorial: 4 - 几个常用技术

作者头像
杨熹
发布于 2019-04-22 02:48:19
发布于 2019-04-22 02:48:19
57300
代码可运行
举报
文章被收录于专栏:杨熹的专栏杨熹的专栏
运行总次数:0
代码可运行

这里我们将学习一些基础操作:

  1. 特征标准化
  2. 画学习曲线
  3. callbacks

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%matplotlib inline
%load_ext tensorboard.notebook

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
import sklearn
import sys
import tensorflow as tf
from tensorflow import keras  # tf.keras
import time

assert sys.version_info >= (3, 5) # Python ≥3.5 required
assert tf.__version__ >= "2.0"    # TensorFlow ≥2.0 required

fashion_mnist = keras.datasets.fashion_mnist
(X_train_full, y_train_full), (X_test, y_test) = (
    fashion_mnist.load_data())
X_valid, X_train = X_train_full[:5000], X_train_full[5000:]
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]

plt.imshow(X_train[0], cmap="binary")
plt.show()

class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat",
               "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]

1. 建立神经网络

下面这个过程是一个最基础的模型建立到评估到预测的流程, 几乎都是遵循这样的一个过程,

  • 先是建立一个基础的网络模型, 输入层,先将 28x28 图片转换成 1x784 , 隐藏层,定义神经元个数和激活函数, 输出层,定义类别的个数,并用 softmax 得到概率。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28, 28]),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.Dense(100, activation="relu"),
    keras.layers.Dense(10, activation="softmax")
])

然后是查看模型,

  • 编译模型,此时定义 loss,optimizer,metrics,
  • 训练模型可以用最简单的 fit,
  • 评估模型用 model.evaluate
  • 最后是预测新数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model.summary()
model.compile(loss="sparse_categorical_crossentropy",
              optimizer="sgd", 
              metrics=["accuracy"])
history = model.fit(X_train, y_train, epochs=10,
                    validation_data=(X_valid, y_valid))
model.evaluate(X_test, y_test)

n_new = 10
X_new = X_test[:n_new]
y_proba = model.predict(X_new)

2. 常用技术

1. 我们可以对特征进行标准化的预处理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)
X_valid_scaled = scaler.transform(X_valid.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)
X_test_scaled = scaler.transform(X_test.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)

然后在模型训练和评估时使用标准化的数据,可以对比两次效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
history = model.fit(X_train_scaled, y_train, epochs=20,
                    validation_data=(X_valid_scaled, y_valid))
model.evaluate(X_test_scaled, y_test)

2. 我们还可以用 pd.DataFrame(history.history).plot 画出学习曲线

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8, 5))
    plt.grid(True)
    plt.gca().set_ylim(0, 1)
    plt.show()
plot_learning_curves(history)

3. 想要知道预测结果的类别 ID,可以用下面两种方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
y_pred = y_proba.argmax(axis=1)
y_pred = model.predict_classes(X_new)

要查看 top k 类别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
k = 3
top_k = np.argsort(-y_proba, axis=1)[:, :k]
top_k

4. fit() 里面可以接收 callbacks:

callbacks 回调函数是一个函数的合集,可以调用 TensorBoard,EarlyStopping, ModelCheckpoint 等函数。

model 和 compile 没有变化,只需要将 callbacks 传递给 fit:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28, 28]),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.Dense(100, activation="relu"),
    keras.layers.Dense(10, activation="softmax")
])
model.compile(loss="sparse_categorical_crossentropy",
              optimizer="sgd", metrics=["accuracy"])

logdir = os.path.join(root_logdir, "run_{}".format(time.time()))

callbacks = [
    keras.callbacks.TensorBoard(logdir),
    keras.callbacks.EarlyStopping(patience=5),
    keras.callbacks.ModelCheckpoint("my_mnist_model.h5", save_best_only=True),
]

history = model.fit(X_train_scaled, y_train, epochs=50,
                    validation_data=(X_valid_scaled, y_valid),
                    callbacks=callbacks)

学习资料: https://github.com/ageron/tf2_course/blob/master/01_neural_nets_with_keras.ipynb


大家好! 我是 不会停的蜗牛 Alice, 喜欢人工智能,每天写点机器学习干货, 欢迎关注我!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Tensorflow Keras:mnist分类demo
tf2集成的keras非常好用,对一些简单的模型可以快速搭建,下面以经典mnist数据集为例,做一个demo,展示一些常用的方法
Mirza Zhao
2023/06/26
5490
TensorFlow 2.0 Tutorial: 3 - 几种 RNN 模型的实现
下面创建一个简单的 2 层 RNN,每层有 100 个神经元,输出层是单个神经元的 dense 层:
杨熹
2019/04/17
2.9K0
keras知识点
所有的函数都在keras.preprocessing 分别有text ,sequence, image
润森
2019/08/29
4800
毕业设计(基于TensorFlow的深度学习与研究)之完结篇
本文是我的毕业设计基于TensorFlow的深度学习与研究的完结篇,在本篇推文中,我将分为三个部分去写:
石璞东
2020/04/21
4.6K0
毕业设计(基于TensorFlow的深度学习与研究)之完结篇
1维卷积神经网络_卷积神经网络 一维信号处理
  维卷积神经网络,可以用来做一维的数据分析,以家用电器的识别分类作为背景。使用excel画出的简单的图形如下,横坐标为用电器开启后的秒数,纵坐标为某一秒的有功功率,由上至下分别为空调(Air Conditioner),冰箱(Refrigerator),烤炉(Stove): !
全栈程序员站长
2022/09/30
2K0
1维卷积神经网络_卷积神经网络 一维信号处理
深度学习在网络管理中的应用:智能化的新时代
网络管理在现代信息技术中占据着举足轻重的地位。随着网络规模的扩大和复杂性的增加,传统的网络管理手段已经无法满足日益增长的需求。深度学习作为人工智能的一个重要分支,通过其强大的数据处理和模式识别能力,为网络管理带来了新的契机。本文将详细探讨深度学习在网络管理中的应用,并通过代码示例展示其实际操作。
Echo_Wish
2024/12/07
1380
NumPy和Pandas入门指南
数据科学是当今数字时代中的一个重要领域,而Python是数据科学家们最喜爱的编程语言之一。在这篇博客中,我们将介绍Python中两个强大的库——NumPy和Pandas,它们在数据处理和分析中发挥着重要作用。
一键难忘
2024/04/16
7380
迁移学习简介
人类从小就在日常活动中成长和学习。人类通过学习一项任务来获取知识。通过使用相同的知识,我们倾向于解决相关的任务。
deephub
2021/07/01
4160
第10章 使用Keras搭建人工神经网络·精华代码
电脑上看效果好,不用左右滑屏。都调好了,复制粘贴就可以在PyCharm里直接跑起来。 # -*- coding: utf-8 -*- # 需要安装和引入的包有tensorflow\pandas\numpy\matplotlib\scikit-learn # 使用pip安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ tensorflow pandas matplotlib scikit-learn import numpy as
SeanCheney
2019/10/21
1.3K0
Tensorflow技术点整理
这里我们可以看到,这些图像数据集都是28*28的单通道图片。我们将这些数据集分成了55000个训练数据集,5000个验证数据集以及10000个测试数据集。现在我们再来看一下这些数据集的分类类型
算法之名
2021/10/22
5650
keras利用sklearn进行超参数自动搜索
深度学习模型通常具有许多可以调整的超参数,例如学习率、批次大小、隐藏层数、神经元数量及优化器等。为了在给定的任务和数据集上获得模型的最佳性能,我们需要找到在模型中使用的最佳超参数值。搜索最佳超参数组合的过程称为超参数优化。
Mirza Zhao
2023/07/12
6190
TensorFlow 2.0 快速入门指南:第二部分
在本节中,我们将首先看到 TensorFlow 在监督机器学习中的许多应用,包括线性回归,逻辑回归和聚类。 然后,我们将研究无监督学习,特别是应用于数据压缩和去噪的自编码。
ApacheCN_飞龙
2023/04/23
5690
基于传统机器学习模型算法的项目开发详细过程
1、 pandas读取数据: pd.read_csv(),训练数据一般从csv文件加载。读取数据返回DataFrame,df.head() 查看前5条件数据分布
用户1414696
2024/01/14
3040
使用Python实现深度学习模型:模型监控与性能优化
在深度学习模型的实际应用中,模型的性能监控与优化是确保其稳定性和高效性的关键步骤。本文将介绍如何使用Python实现深度学习模型的监控与性能优化,涵盖数据准备、模型训练、监控工具和优化策略等内容。
Echo_Wish
2024/07/08
3360
使用Python实现深度学习模型:模型监控与性能优化
[Kaggle] Digit Recognizer 手写数字识别(神经网络)
相关博文: [Hands On ML] 3. 分类(MNIST手写数字预测) [Kaggle] Digit Recognizer 手写数字识别
Michael阿明
2021/02/19
4010
事实胜于雄辩,苹果MacOs能不能玩儿机器/深度(ml/dl)学习(Python3.10/Tensorflow2)
    坊间有传MacOs系统不适合机器(ml)学习和深度(dl)学习,这是板上钉钉的刻板印象,就好像有人说女生不适合编程一样的离谱。现而今,无论是Pytorch框架的MPS模式,还是最新的Tensorflow2框架,都已经可以在M1/M2芯片的Mac系统中毫无桎梏地使用GPU显卡设备,本次我们来分享如何在苹果MacOS系统上安装和配置Tensorflow2框架(CPU/GPU)。
用户9127725
2023/04/17
1K0
事实胜于雄辩,苹果MacOs能不能玩儿机器/深度(ml/dl)学习(Python3.10/Tensorflow2)
TensorFlow2.0(9):神器级可视化工具TensorBoard
TensorBoard是TensorFlow中的又一神器级工具,想用户提供了模型可视化的功能。我们都知道,在构建神经网络模型时,只要模型开始训练,很多细节对外界来说都是不可见的,参数如何变化,准确率怎么样了,loss还在减小吗,这些问题都很难弄明白。但是,TensorBoard通过结合web应用为我们提供了这一功能,它将模型训练过程的细节以图表的形式通过浏览器可视化得展现在我们眼前,通过这种方式我们可以清晰感知weight、bias、accuracy的变化,把握训练的趋势。
统计学家
2019/12/25
3.7K0
Tensorflow2.0
tf.test.is_gpu_available() # 判断gpu可用与否 ``` 2. 从镜像配置 ```shell # 云端的系统镜像直接有开发环境 # 升级tensorflow 版本 pip install --upgrade tensorflow-gpu==2.0.0 pip3 install --upgrade tensorflow-gpu==2.0.0 ```
Dean0731
2020/05/25
1.7K0
Tensorflow2.0
MOOC TensorFlow入门实操课程代码回顾总结(一)
0 T-shirt/top(体恤) 1 Trouser(裤子) 2 Pullover(套头衫) 3 Dress(连衣裙) 4 Coat(外套) 5 Sandal(凉鞋) 6 Shirt(衬衫) 7 Sneaker(运动鞋) 8 Bag(袋子) 9 Ankle boot(短靴)
荣仔_最靓的仔
2022/01/05
7410
MOOC TensorFlow入门实操课程代码回顾总结(一)
[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
相关博文: [Hands On ML] 3. 分类(MNIST手写数字预测) [Kaggle] Digit Recognizer 手写数字识别 [Kaggle] Digit Recognizer 手写数字识别(简单神经网络) 04.卷积神经网络 W1.卷积神经网络
Michael阿明
2021/02/19
1.4K0
[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
相关推荐
Tensorflow Keras:mnist分类demo
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验