every blog every motto:

0. 前言

以fashion_mnist 为例,对GPU做相关设置,逻辑切分

1. 代码部分

1. 导入模块

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras# os.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:0'
print(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:print(module.__name__,module.__version__)

2. 查看GPU是否可用

tf.test.is_gpu_available()

3. GPU设置

  1. 查看变量在哪个GPU上的分布
  2. 获取物理GPU
  3. 获取逻辑GPU
  4. 设置GPU自增长
tf.debugging.set_log_device_placement(True) # 查看变量分布在哪个GPU上
gpus = tf.config.experimental.list_physical_devices('GPU') # 获取物理GPU
print(gpus)# 设置选中的(最后一个)GPU可见
tf.config.experimental.set_visible_devices(gpus[-1],'GPU')# 逻辑切分
tf.config.experimental.set_virtual_device_configuration(gpus[-1],# 将最后一个GPU切分[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=2048),tf.config.experimental.VirtualDeviceConfiguration(memory_limit=2048)]
)print(len(gpus))
print('='*10)
logical_gpus = tf.config.experimental.list_logical_devices('GPU') # 获取逻辑GPU
print(len(logical_gpus))

4. 读取数据与处理

4.1 读取数据

fashion_mnist = keras.datasets.fashion_mnist
# print(fashion_mnist)
(x_train_all,y_train_all),(x_test,y_test) = fashion_mnist.load_data()
x_valid,x_train = x_train_all[:5000],x_train_all[5000:]
y_valid,y_train = y_train_all[:5000],y_train_all[5000:]
# 打印格式
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)

4.2 数据归一化

# 数据归一化
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
# x_train:[None,28,28] -> [None,784]
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1,1)).reshape(-1,28,28,1)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28,1)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1,1)).reshape(-1,28,28,1)

4.3 生成dataset

# 生成dataset
def make_dataset(images,labels,epochs,batch_size,shuffle=True):dataset = tf.data.Dataset.from_tensor_slices((images,labels))if shuffle:dataset = dataset.shuffle(10000)dataset = dataset.repeat(epochs).batch(batch_size).prefetch(50)return datasetbatch_size = 128
epochs = 100
train_dataset = make_dataset(x_train_scaled,y_train,epochs,batch_size)

5. 构建模型

# tf.keras.models.Sequential()
# 构建模型
model = keras.models.Sequential()# 卷积神经网络
model.add(keras.layers.Conv2D(filters=32,kernel_size=3,padding="same",activation='relu',input_shape=(28,28,1)))
model.add(keras.layers.Conv2D(filters=32,kernel_size=3,padding='same',activation='relu'))
model.add(keras.layers.MaxPool2D(pool_size=2))model.add(keras.layers.Conv2D(filters=64,kernel_size=3,padding="same",activation='relu'))
model.add(keras.layers.Conv2D(filters=64,kernel_size=3,padding='same',activation='relu'))
model.add(keras.layers.MaxPool2D(pool_size=2))model.add(keras.layers.Conv2D(filters=128,kernel_size=3,padding="same",activation='relu'))
model.add(keras.layers.Conv2D(filters=128,kernel_size=3,padding='same',activation='relu'))
model.add(keras.layers.MaxPool2D(pool_size=2))# 展平
model.add(keras.layers.Flatten())# 全连接层
model.add(keras.layers.Dense(128,activation='relu'))# 输出层
model.add(keras.layers.Dense(10,activation="softmax"))#
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
model.summary()

6. 训练


# 开始训练
history = model.fit(train_dataset,steps_per_epoch = x_train_scaled.shape[0] // batch_size,epochs=10)

7. 学习曲线

# 画图
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)# 损失函数,刚开始下降慢的原因
# 1. 参数众多,训练不充分
# 2. 梯度消失 -》 链式法则中
# 解决: selu缓解梯度消失

8. 测试集上

model.evaluate(x_test_scaled,y_test)

从零基础入门Tensorflow2.0 ----八、39.3. gpu3相关推荐

  1. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  2. SQL零基础入门学习(八)

    SQL零基础入门学习(七) SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来. 下图展示了 LEFT JOIN.RIGHT JOIN.INNER JOIN.OUTER J ...

  3. C语言零基础入门习题(八)四则运算

    前言 C语言是大多数小白走上程序员道路的第一步,在了解基础语法后,你就可以来尝试解决以下的题目.放心,本系列的文章都对新手非常友好. Tips:题目是英文的,但我相信你肯定能看懂 一.四则运算 题目 ...

  4. Apache Flink 零基础入门(十八)Flink Table APISQL

    什么是Flink关系型API? 虽然Flink已经支持了DataSet和DataStream API,但是有没有一种更好的方式去编程,而不用关心具体的API实现?不需要去了解Java和Scala的具体 ...

  5. SQL零基础入门学习(九)

    SQL零基础入门学习(八) SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列.列也 ...

  6. 0基础能学漫画么?漫画零基础入门教程!

    漫画零基础入门教程!很多人都喜欢看动漫,同时也会幻想成为动漫里的主角,与此同时也会诞生学漫画的想法.不论是你真的想学习漫画,又或出于个人爱好,或职业需要,或为了具备一项自己喜欢的看家本领.我们都要先清 ...

  7. 新版思科CCNA认证1.0 零基础入门技术VTP协议解析-ielab网络实验室

     新版思科CCNA认证1.0 零基础入门技术VTP协议解析-ielab网络实验室 VTP(VLAN Trunking Protocol):VLAN中继协议,是Cisco专用协议.也被称为虚拟局域网干道 ...

  8. 0基础学python难吗-零基础入门学习Python技术难不难?

    原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...

  9. 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版

    Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...

  10. 《C#零基础入门之百识百例》(五十八)接口 -- 模拟银行存储

    C#零基础入门 面向对象 -- 接口 -- 模拟银行存储 前言 一,接口 1.1 概念定义 1.2 遵守规则 二,接口的实现 2.1 接口的实现示例 2.2 接口的实现和继承 三,实例练习 -- 模拟 ...

最新文章

  1. win10 4步快速安装vue
  2. Nature:原来记忆是这样形成的!科学家发现记忆形成新机制
  3. C语言入门经典——基础知识(数据类型)(32位与64位系统基本数据类型的字节数)
  4. weblogic与sitemesh乱码问题
  5. java ipv6校验_java - IPv6地址验证和规范化[关闭] - 堆栈内存溢出
  6. 建立简单的服务器端程序
  7. Apollo进阶课程㉘丨Apollo控制技术详解——基于模型的控制方法
  8. jmeter服务器性能资源监控部署
  9. Nginx进程间通讯方式
  10. NYOJ-水池数目(dfs)
  11. C语言库函数学习知识
  12. ERP物料信息编码体系的研究与实践
  13. 利用梦网云通讯实现 短信 验证码 发送 附带教程~~~
  14. Systen类、Runtime类、Math类、Random类、包装类
  15. Can‘t Update No tracked branch configured for branch
  16. 如何建立团队知识库管理系统,把分散信息有效整理?
  17. php----拷贝兔源代码分析dl函数和getdata函数
  18. 【DB笔试面试622】在Oracle中,说说COUNT(*)计算行数有哪些优化手段?
  19. 家·谱——人脸识别家谱系统
  20. 美团脱颖而出的经验_使用条件格式使重要的Outlook邮件脱颖而出

热门文章

  1. JAVAWeb项目 微型商城项目-------(三)导包及工具类的准备
  2. linux编译框架的搭建,Linux下单机版的beego框架的搭建
  3. JAVA读锁不使用效果一样_为什么Java的同步集合不使用读/写锁?
  4. final可以修饰哪些java名词_Java关键知识点 - Java final关键字到底修饰了什么?
  5. jdbc封装工具类代码_【百战程序员从开始到植发】之JDBC
  6. 关于 Spring 注解和 XML 的选择问题
  7. filter动态参数 maven_多环境下Maven项目的管理
  8. JavaWeb:下载文件
  9. 实战Swiper:利用Swiper制作手机全屏相册
  10. Javascript特效:一个不停的表盘