深度學習之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.pswp.cn/news/256521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256521.shtml
英文地址,請注明出處:http://en.pswp.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;在此僅作…