(七) Keras 绘制网络结构和cpu,gpu切换
视频学习来源
https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553
笔记
首先安装pydot
conda install pydot
会自动安装graphviz
如果出现TypeError: softmax() got an unexpected keyword argument 'axis' 错误,可降级keras或者用本文代码标黄的部分解决
切换cpu和gpu运算
https://www.cnblogs.com/jins-note/p/9756050.html
conda安装keras-gpu (conda会自动查询依赖安装需要的相关包,如TensorFlow)
(如果环境出现问题,用conda移除相关包,重新安装keras-gpu即可)
在导入keras前,插入代码
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
# The GPU id to use, usually either "0" or "1"
os.environ["CUDA_VISIBLE_DEVICES"] = "0" #使用gpu
os.environ["CUDA_VISIBLE_DEVICES"] = "-1" #为使用CPU
import numpy as np
from keras.datasets import mnist #将会从网络下载mnist数据集
from keras.utils import np_utils
from keras.models import Sequential #序列模型
#Convolution2D 是2维卷积
#MaxPooling2D 是2维最大池化
#Flatten 数据扁平化(降维)
from keras.layers import Dense,Dropout,Convolution2D,MaxPooling2D,Flatten #在这里导入dropout
from keras.optimizers import Adam
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
import tensorflow as tf
#需要安装pydot和graphviz
#graphviz需要在官网安装,安装后需要添加环境变量,程序所在目录的bin文件夹加入系统变量
#载入数据
(x_train,y_train),(x_test,y_test)=mnist.load_data()
#查看格式
#(60000,28,28)
print('x_shape:',x_train.shape)
#(60000)
print('y_shape:',y_train.shape) #转化为4维
#最后一个维度图片深度,1表示黑白,3表示彩色
#rgb是红绿蓝三通道0-255表示各个通道的颜色深度
#(60000,28,28)->(60000,28,28,1)
#-1表示自动设置
#除以255是做数据归一化处理
x_train=x_train.reshape(-1,28,28,1)/255.0 #转换数据格式
x_test=x_test.reshape(-1,28,28,1)/255.0 #转换数据格式
#label标签转换成 one hot 形式
y_train=np_utils.to_categorical(y_train,num_classes=10) #分成10类
y_test=np_utils.to_categorical(y_test,num_classes=10) #分成10类 #定义序列模型
model=Sequential() #第一个卷积层
#input_shape 输入平面
#filters 卷积核/滤波器个数
#kernel_size 卷积窗口大小
#strides 步长
#padding padding方式 same/valid
#activation 激活函数
model.add(Convolution2D(
input_shape=(28,28,1),#只需要在第一次添加输入平面
filters=32,
kernel_size=5,
strides=1,
padding='same',
activation='relu'
)) #平面大小28x28,用same padding得到的和上一次一样,也是28x28,有32个特征图
#池化后变成14x14,32个特征图 #第一个池化层
model.add(MaxPooling2D(
pool_size=2, # 池化窗口大小 2x2的窗口
strides=2,
padding='same'
)) #第二个卷积层
#filters=64 kernel_seize=5
model.add(Convolution2D(64,5,strides=1,padding='same',activation='relu')) #第二个卷积层后64个特征图,14x14
#第二个池化层后64个特征图,7x7 #第二个池化层
model.add(MaxPooling2D(2,2,'same')) #把第二个池化层的输出扁平化为1维
#长度 64x7x7
model.add(Flatten()) #第一个全连接层
#1024个神经元
model.add(Dense(1024,activation='relu')) #Dropout
#训练时百分之40个神经元不工作
model.add(Dropout(0.4)) #第二个全连接层
model.add(Dense(10,activation=(tf.nn.softmax))) ##定义优化器
##学习速率为10的负4次方
#adam=Adam(lr=1e-4)
#
#
##定义优化器,损失函数,训练效果中计算准确率
#model.compile(
# optimizer=adam, #sgd优化器
# loss='categorical_crossentropy', #损失用交叉熵,速度会更快
# metrics=['accuracy'], #计算准确率
#)
#
##训练
##六万张,每次训练64张,训练10个周期(六万张全部训练完算一个周期)
#model.fit(x_train,y_train,batch_size=64,epochs=10)
#
##评估模型
#loss,accuracy=model.evaluate(x_test,y_test)
#
#print('\ntest loss',loss)
#print('\ntest accuracy',accuracy)
#
#loss,accuracy=model.evaluate(x_train,y_train)
#
#print('\ntrain loss',loss)
#print('\ntrain accuracy',accuracy)
#TB代表从上往下,LR表示从左往右
plot_model(model,to_file='model.png',show_shapes=True,show_layer_names='False',rankdir='TB')
plt.figure(figsize=(20,20))
img=plt.imread('model.png')
plt.imshow(img)
plt.axis('off')
plt.show()
(七) Keras 绘制网络结构和cpu,gpu切换的更多相关文章
- Cpu Gpu 内存 显存 数据流
[精]从CPU架构和技术的演变看GPU未来发展 http://www.pcpop.com/doc/0/521/521832_all.shtml 显存与纹理内存详解 http://blog.csdn.n ...
- Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度
Raspberry Pi B+ 定时向物联网yeelink上传CPU GPU温度 硬件平台: Raspberry Pi B+ 软件平台: Raspberry 系统与前期安装请参见:树莓派(Ros ...
- 舌尖上的硬件:CPU/GPU芯片制造解析(高清)(组图)
一沙一世界,一树一菩提,我们这个世界的深邃全部蕴藏于一个个普通的平凡当中.小小的厨房所容纳的不仅仅是人们对味道的情感,更有推动整个世界前进的动力.要想理解我们的世界,有的时候只需要细细品味一下我们所喜 ...
- [转帖]双剑合璧:CPU+GPU异构计算完全解析
引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得 ...
- cpu gpu数据同步
https://developer.apple.com/documentation/metal/advanced_command_setup/cpu_and_gpu_synchronization d ...
- CPU/GPU/TPU/NPU...XPU都是什么意思?
CPU/GPU/TPU/NPU...XPU都是什么意思? 现在这年代,技术日新月异,物联网.人工智能.深度学习等概念遍地开花,各类芯片名词GPU, TPU, NPU,DPU层出不穷......都是什么 ...
- keras & tensorflow 列出可用GPU 和 切换CPU & GPU
列出可用GPU from tensorflow.python.client import device_lib print(device_lib.list_local_devices()) from ...
- CPU GPU设计工作原理《转》
我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...
- three.js粒子效果(分别基于CPU&GPU实现)
前段时间做了一个基于CPU和GPU对比的粒子效果丢在学习WebGL的群里,技术上没有多作讲解,有同学反馈看不太懂GPU版本,干脆开一篇文章,重点讲解基于GPU开发的版本. 一.概况 废话不多说,先丢上 ...
随机推荐
- .NET中的状态机库Stateless
标题:.NET中的状态机库Stateless 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10674018.html 介绍 什么是状态机和状态模式 ...
- 【极简版】SpringBoot+SpringData JPA 管理系统
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在上一篇中已经讲解了如何从零搭建一个SpringBo ...
- MVC图片上传详解
MVC图片上传--控制器方法 新建一个控制器命名为File,定义一个Img方法 [HttpPost]public ActionResult Img(HttpPostedFileBase shangch ...
- Css3 笔记 动画 和定位属性
transform 变形属性属性:translate 平移,rotate 旋转, scale 缩放,skew 倾斜 ◆ translate :指定对象的2D平移第一个参数对应X轴,第二参数对应Y轴:如 ...
- 底部导航栏-----FragmentTabHost
[说明] 1.主界面上添加父容器:FragmentTabHost 属于v4兼容包 需要指定该id为android:id/tabhost,不能修改,表示由android系统来托管这个id. 本身是一个F ...
- 【学习笔记】【Design idea】二、产品内测、公测、候选版本的概念及版本代码的书写
一.前言 参考:百度百科 https://baike.baidu.com/item/beta/640969?fr=aladdin 广义上对测试有着三个传统的称呼:Alpha(α).Beta(β)和Ga ...
- 关于ORACLE的各种操作~持续汇总~
增.删.改: 增加所有 INSERT INTO 表名 VALUES(序列名.NEXTVAL,'值1','值2','值3','值4','值5'); 指定增加 INSERT INTO 表名(字段1,字段2 ...
- 在WebStorm里配置watcher实现编辑less文件时自动生成.map和压缩后的.css文件
[文件(File)]-[设置(Settings)]-[工具(Tools)]-[File Watchers]-[+]-[Less]打开New Watcher配置界面. https://blog.csdn ...
- 如何开发使用自定义文件的OEM应用程序
有关创建和使用自定义数据文件的详细信息,请参阅DISM应用程序包(.appx或.appxbundle)服务命令行选项. 了解如何开发使用自定义文件的应用程序,将信息从OEM传递到应用程序. 对于您为O ...
- 【Android Studio安装部署系列】三十二、Android模拟器Genymotion安装使用教程详解
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 一.注册\登录 打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行 ...