深度学习之keras (一) 初探

之前一段时间里,学习过tensorflow和Pytorch也写了点心得,目前是因为项目原因用了一段时间Keras,觉得很不错啊,至少从入门来说对新手极度友好,由于keras是基于tensoflow的基础,相当于tensorflow的高级API吧!(如果理解有错可以在下方评论纠正博主哈!)

一、安装

安装很简单,也是基于tensorflow的前提下(如果有疑问,请参考博主之前的博客),

pip install keras

二、应用示例

# -*- coding: utf-8 -*-
# =============================================================================
# #在线下载
# from keras.datasets import mnist
# (X_train,Y_train),(X_test,Y_test) = mnist.load_data()
# 
# print("train:%d imgs"%len(X_train))
# print("test:%d imgs"%len(X_test))
# =============================================================================
online_or_not =False
#本地读取
from tensorflow.examples.tutorials.mnist import input_data
import numpy as npimport matplotlib.pyplot as plt
from PIL import Imagedef show_mnist(train_image,train_labels):n = 3m = 3for i in range(n):for j in range(m):plt.subplot(n,m,i*n+j+1)#plt.subplots_adjust(wspace=0.2, hspace=0.8)index = i * n + j #当前图片的标号img_array = train_image[index]*255img = Image.fromarray(img_array)plt.title(train_labels[index])plt.imshow(img,cmap='Greys')plt.show()#show_mnist(x_train, y_train)# coding: utf-8
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flatten
from keras.optimizers import Adam
np.random.seed(1337)"""mnist数据集的label本身进行了one-hot标签化处理"""
if online_or_not:# download the mnist(X_train, Y_train), (X_test, Y_test) = mnist.load_data()# data pre-processingX_train = X_train.reshape(-1, 1, 28, 28)/255X_test = X_test.reshape(-1, 1, 28, 28)/255Y_train = np_utils.to_categorical(Y_train, num_classes=10)Y_test = np_utils.to_categorical(Y_test, num_classes=10)
else:X_train = []X_test = []print("train:%d imgs"%len(X_train))
print("test:%d imgs"%len(X_test))# build CNN
model = Sequential()# conv layer 1 output shape(32, 28, 28)
model.add(Convolution2D(filters=32,kernel_size=5,strides=1,padding='same',batch_input_shape=(None, 1, 28, 28),data_format='channels_first'))
model.add(Activation('relu'))# pooling layer1 (max pooling) output shape(32, 14, 14)
model.add(MaxPooling2D(pool_size=2, strides=2, padding='same', data_format='channels_first'))# conv layer 2 output shape (64, 14, 14)
model.add(Convolution2D(64, 5, strides=1, padding='same', data_format='channels_first'))
model.add(Activation('relu'))# pooling layer 2 (max pooling) output shape (64, 7, 7)
model.add(MaxPooling2D(2, 2, 'same', data_format='channels_first'))# full connected layer 1 input shape (64*7*7=3136), output shape (1024)
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))# full connected layer 2 to shape (10) for 10 classes
model.add(Dense(10))
model.add(Activation('softmax'))model.summary()
# define optimizer
adam = Adam(lr=1e-4)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])# training
print ('Training')
model.fit(X_train, Y_train, epochs=1, batch_size=128)# testing
print ('Testing')
loss, accuracy = model.evaluate(X_test, Y_test)
print ('loss, accuracy: ', (loss, accuracy))

三、模型可视化

from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flatten
from keras.optimizers import Adam
#模型可视化引入
import keras.callbacks
import tensorflow as tf
np.random.seed(1337)(X_train, Y_train), (X_test, Y_test) = mnist.load_data()# data pre-processing
X_train = X_train.reshape(-1, 1, 28, 28)/255
X_test = X_test.reshape(-1, 1, 28, 28)/255
Y_train = np_utils.to_categorical(Y_train, num_classes=10)
Y_test = np_utils.to_categorical(Y_test, num_classes=10)# build CNN
def build_model():model = Sequential()# conv layer 1 output shape(32, 28, 28)model.add(Convolution2D(filters=32,kernel_size=5,strides=1,padding='same',batch_input_shape=(None, 1, 28, 28),data_format='channels_first'))model.add(Activation('relu'))# pooling layer1 (max pooling) output shape(32, 14, 14)model.add(MaxPooling2D(pool_size=2, strides=2, padding='same', data_format='channels_first'))# conv layer 2 output shape (64, 14, 14)model.add(Convolution2D(64, 5, strides=1, padding='same', data_format='channels_first'))model.add(Activation('relu'))# pooling layer 2 (max pooling) output shape (64, 7, 7)model.add(MaxPooling2D(2, 2, 'same', data_format='channels_first'))# full connected layer 1 input shape (64*7*7=3136), output shape (1024)model.add(Flatten())model.add(Dense(1024))model.add(Activation('relu'))# full connected layer 2 to shape (10) for 10 classesmodel.add(Dense(10))model.add(Activation('softmax'))model.summary()return model
model = build_model()
# define optimizer
adam = Adam(lr=1e-4)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])#模型可视化
tb_config = keras.callbacks.TensorBoard(log_dir= 'E:/python/kerascode/mnist_cnn/logs', write_images= 1, histogram_freq= 0)
cbks = [tb_config]# training
print ('Training')
#模型可视化需要加入“callbacks= cbks”
model.fit(X_train, Y_train, epochs=1,  callbacks= cbks, batch_size=512)# testing
print ('Testing')
loss, accuracy = model.evaluate(X_test, Y_test)
print ('loss, accuracy: ', (loss, accuracy))

会在 log_dir= 'E:/python/kerascode/mnist_cnn/logs'该文件夹处生成events.out.tfevents.1566199816.ZD 训练日志,打开Anaconda Prompt,激活对应的环境,定位到logs文件的上一级目录,如下图所示,输入

tensorboard --logdir=AB

(此处AB即上文中的logs文件夹名称)。

将网址复制到谷歌浏览器中即可,结果如下图所示:

四、模型可视化踩坑

from keras.utils.vis_utils import plot_model
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTMmodel = Sequential()
model.add(Embedding(input_dim=1024, output_dim=256, input_length=50))
model.add(LSTM(128))  # try using a GRU instead, for fun
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))plot_model(model, to_file='model1.png', show_shapes=True)

这个过程会报错,

raise ImportError('Failed to import `pydot`. ''Please install `pydot`. ''For example with `pip install pydot`.')

作为一个菜鸡,只能查到是导入pydot发生错误,很尴尬!还好有个博客大佬,教会如何改错。

打开vis_utils.py文件,将相应地方注释并加入下列代码

# `pydot` is an optional dependency,
# see `extras_require` in `setup.py`.
# =============================================================================
# try:
#     import pydot
# except ImportError:
#     pydot = None
# =============================================================================
try:import pydot_ng as pydot
except ImportError:try:import pydotplus as pydotexcept ImportError:try:import pydotexcept ImportError:pydot=None

参考文献:

https://blog.csdn.net/xu_haim/article/details/84981284

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...

swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算。 不同于C语言中的数值计算,Swift的数值计算默…

收集、报告或保存系统活动信息:sar命令

2019独角兽企业重金招聘Python工程师标准>>> 索引 sar命令的使用常用方法 查看网络设备(网卡)的状态信息查看socket使用情况查看cpu使用情况(默认)查看内存和交换空间使用情况查看内存的统计信息查看tty设备的活动状态查看等待运行的进程数和…

【GOF23设计模式】原型模式

【GOF23设计模式】原型模式 来源:http://www.bjsxt.com/ 一、【GOF23设计模式】_原型模式、prototype、浅复制、深复制、Cloneable接口 浅复制 1 package com.test.prototype;2 3 import java.util.Date;4 5 /**6 * 浅复制7 */8 public class Sheep implements C…

ANSYS——自定义的梁截面中心(法线节点)的偏置,详细全面

目录 1、ANSYS梁的确定 2.关于梁截面的一些名词 总体坐标系 梁截面坐标系 梁单元的坐标系

Deepfacelab 小白教程

不小心入了AI换脸的坑,但是感觉AI换脸很有意思,第一次感觉科研使我快乐。 目录 一、AI换脸软件简介 二、Deepfacelab下载安装 三、Deepfacelab Demo实现 四、Deepfacelab 填坑 五、总结 一、AI换脸软件简介 这个没有具体使用过,目前我…

Underscore.js 的模板功能

Underscore是一个非常实用的JavaScript库,提供许多编程时需要的功能的支持,他在不扩展任何JavaScript的原生对象的情况下提供很多实用的功能。 无论你写一段小的js代码,还是写一个大型的HTML5应用,underscore都能帮上忙。目前&…

ANSYS——查看剖面图的应力分布云图以及工作平面的相关设置

剖面图和切片图其实差不多,只是切片图只有一个截面,而剖面图是切去一部分保留另一部分模型,不但可以看到截面处应力分布还可以看到剩余模型的应力分布 切片应力云图可见:https://blog.csdn.net/qq_45769063/article/details/106357700 1.剖面云图的查看 首先将工作平面的…

2016.8.2

高端内存映射方式 高端内存映射分为三种:永久映射、临时映射和非连续动态内存映射。高端内存一般是指896MB以上的页框,这段区间内核一般不能直接访问。 1.永久映射 永久内核映射允许内核建立高端页框到内核地址空间的长期映射。它们使用主内核页表中的一…

深度学习之pytorch(三) C++调用

玩深度学习,个人觉得基于anaconda的python适合开发与测试,C适合实际的工程部署!而pytorch官方有编译好的libtorch,特别方便,适合于我这样的伸手党和手残党(win10下编译tensorflow编译了好久都没通过,好忧伤…

ANSYS入门——模态分析步骤与实例详解

目录 一、ANSYS求解模态分析步骤 建模 施加载荷和求解

javascript库之Mustache库使用说明

一、简单示例 代码: 1 function show(t) { 2 $("#content").html(t); 3 } 4 5 var view { 6 title: YZF, 7 cacl: function () { 8 return …

Light OJ 1007

求区间欧拉函数平方和。。。 最后因为longlong 范围爆了WA 了&#xff0c; 0.0 #include<bits/stdc.h> using namespace std; const int maxn 5000000 131; typedef unsigned long long LL;bool Com[maxn]; LL Num[maxn], Prim[maxn / 3]; int Cnt;void INIT() {Num[1]…

MVC架构设计——EF-Code First

详情参考:http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html转载于:https://www.cnblogs.com/shuai7boy/p/5807678.html

机器学习(一) 基于sklearn库的数据集划分(交叉验证)

机器学习中首要环节就是数据集的处理&#xff0c;其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面&#xff1a;数据集划分和数据清理。其中数据集划分是指训练集、验证集和测试集的数据类别划分&#xff1b;数据清理是指数据的清洗、删除等等方面。这两天…

ANSYS——模态分析的理论基础

目录 一、模态分析理论基础 线性与非线性 振动与固有频率 振动方程与振动模态

购物中心潮--我的创业之路

2014年10一个月&#xff0c;我在中国大陆从北我的两个小伙伴跑到最南边中国内地。大半个中国删除更多。早在北京成立购潮商城。2014年11月&#xff0c;购潮商城正式上线。上线当天突破零订单。2014年12月&#xff0c;正式推广市场。渗透大学生校园。2015年2月至今&#xff0c;正…

敏捷项目开源管理软件ScrumBasic(2)- 多项目支持

1.加入Project对象模型 public class Project{[Key][MaxLength(32)]public string ID { get; set; }public string Name { get; set; }public int Order { get; set; }public ICollection<UserStory> Stories { get; set; }public ApplicationUser Creator { get; set; }…

postgresql表和列注释(描述)

2019独角兽企业重金招聘Python工程师标准>>> PostgreSQL添加表和列注释。本文为测试表test&#xff0c;默认无注释。 test# \d关联列表架构模式 | 名称 | 类型 | 拥有者 | 大小 | 描述 -------------------------------------------------public | test | …

ANSYS——模态提取方法简介

目录 block lancoze法 supspace(子空间法) powerdynamics reduced(缩减法) unsymmetric(非对称法) 阻尼法和QR阻尼法

python 使用小知识总结(持续更新ing)

这篇博客主要针对于使用python来进行深度学习/机器学习过程各方面小知识的总结。习惯于使用C这种严谨的语言&#xff0c;改换到python这门相对来说开放式的语言需要很多学习&#xff0c;而作为一个菜鸡&#xff0c;遇到编程问题解决了之后不到一周就会忘记&#xff0c;在此仅作…