最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

keras自動(dòng)編碼器實(shí)現(xiàn)系列之卷積自動(dòng)編碼器操作

 更新時(shí)間:2020年07月03日 09:27:13   作者:xuyang2233  
這篇文章主要介紹了keras自動(dòng)編碼器實(shí)現(xiàn)系列之卷積自動(dòng)編碼器操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

圖片的自動(dòng)編碼很容易就想到用卷積神經(jīng)網(wǎng)絡(luò)做為編碼-解碼器。在實(shí)際的操作中,

也經(jīng)常使用卷積自動(dòng)編碼器去解決圖像編碼問(wèn)題,而且非常有效。

下面通過(guò)**keras**完成簡(jiǎn)單的卷積自動(dòng)編碼。 編碼器有堆疊的卷積層和池化層(max pooling用于空間降采樣)組成。 對(duì)應(yīng)的解碼器由卷積層和上采樣層組成。

@requires_authorization
# -*- coding:utf-8 -*-

from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D
from keras.models import Model
from keras import backend as K
import os

## 網(wǎng)絡(luò)結(jié)構(gòu) ##
input_img = Input(shape=(28,28,1)) # Tensorflow后端, 注意要用channel_last
# 編碼器部分
x = Conv2D(16, (3,3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2,2), padding='same')(x)
x = Conv2D(8,(3,3), activation='relu', padding='same')(x)
x = MaxPooling2D((2,2), padding='same')(x)
x = Conv2D(8, (3,3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2,2), padding='same')(x)

# 解碼器部分
x = Conv2D(8, (3,3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(8, (3,3), activation='relu', padding='same')(x) 
x = UpSampling2D((2, 2))(x)
x = Conv2D(16, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

# 得到編碼層的輸出
encoder_model = Model(inputs=autoencoder.input, outputs=autoencoder.get_layer('encoder_out').output)

## 導(dǎo)入數(shù)據(jù), 使用常用的手寫(xiě)識(shí)別數(shù)據(jù)集
def load_mnist(dataset_name):
'''
load the data
'''
  data_dir = os.path.join("./data", dataset_name)
  f = np.load(os.path.join(data_dir, 'mnist.npz'))
  train_data = f['train'].T
  trX = train_data.reshape((-1, 28, 28, 1)).astype(np.float32)
  trY = f['train_labels'][-1].astype(np.float32)
  test_data = f['test'].T
  teX = test_data.reshape((-1, 28, 28, 1)).astype(np.float32)
  teY = f['test_labels'][-1].astype(np.float32)

  # one-hot 
  # y_vec = np.zeros((len(y), 10), dtype=np.float32)
  # for i, label in enumerate(y):
  #   y_vec[i, y[i]] = 1
  # keras.utils里帶的有one-hot的函數(shù), 就直接用那個(gè)了
  return trX / 255., trY, teX/255., teY

# 開(kāi)始導(dǎo)入數(shù)據(jù)
x_train, _ , x_test, _= load_mnist('mnist')

# 可視化訓(xùn)練結(jié)果, 我們打開(kāi)終端, 使用tensorboard
# tensorboard --logdir=/tmp/autoencoder # 注意這里是打開(kāi)一個(gè)終端, 在終端里運(yùn)行

# 訓(xùn)練模型, 并且在callbacks中使用tensorBoard實(shí)例, 寫(xiě)入訓(xùn)練日志 http://0.0.0.0:6006
from keras.callbacks import TensorBoard
autoencoder.fit(x_train, x_train,
        epochs=50,
        batch_size=128,
        shuffle=True,
        validation_data=(x_test, x_test),
        callbacks=[TensorBoard(log_dir='/tmp/autoencoder')])

# 重建圖片
import matplotlib.pyplot as plt 
decoded_imgs = autoencoder.predict(x_test)
encoded_imgs = encoder_model.predict(x_test)
n = 10
plt.figure(figsize=(20, 4))
for i in range(n):
  k = i + 1
  # 畫(huà)原始圖片
  ax = plt.subplot(2, n, k)
  plt.imshow(x_test[k].reshape(28, 28))
  plt.gray()
  ax.get_xaxis().set_visible(False)
  # 畫(huà)重建圖片
  ax = plt.subplot(2, n, k + n)
  plt.imshow(decoded_imgs[i].reshape(28, 28))
  plt.gray()
  ax.get_xaxis().set_visible(False)
  ax.get_yaxis().set_visible(False)
plt.show()

# 編碼得到的特征
n = 10
plt.figure(figsize=(20, 8))
for i in range(n):
  k = i + 1
  ax = plt.subplot(1, n, k)
  plt.imshow(encoded[k].reshape(4, 4 * 8).T)
  plt.gray()
  ax.get_xaxis().set_visible(False)
  ax.get_yaxis().set_visible(False)
plt.show()        

補(bǔ)充知識(shí):keras搬磚系列-單層卷積自編碼器

考試成績(jī)出來(lái)了,竟然有一門(mén)出奇的差,只是有點(diǎn)意外。

覺(jué)得應(yīng)該不錯(cuò)的,竟然考差了,它估計(jì)寫(xiě)了個(gè)隨機(jī)數(shù)吧。

頭文件

from keras.layers import Input,Dense
from keras.models import Model 
from keras.datasets import mnist
import numpy as np 
import matplotlib.pyplot as plt 

導(dǎo)入數(shù)據(jù)

(X_train,_),(X_test,_) = mnist.load_data()
 
X_train = X_train.astype('float32')/255.
X_test = X_test.astype('float32')/255.
X_train = X_train.reshape((len(X_train),-1))
X_test = X_test.reshape((len(X_test),-1))

這里的X_train和X_test的維度分別為(60000L,784L),(10000L,784L)

這里進(jìn)行了歸一化,將所有的數(shù)值除上255.

設(shè)定編碼的維數(shù)與輸入數(shù)據(jù)的維數(shù)

encoding_dim = 32

input_img = Input(shape=(784,))

構(gòu)建模型

encoded = Dense(encoding_dim,activation='relu')(input_img)
decoded = Dense(784,activation='relu')(encoded)
 
autoencoder = Model(inputs = input_img,outputs=decoded)
encoder = Model(inputs=input_img,outputs=encoded)
 
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
deconder = Model(inputs=encoded_input,outputs = decoder_layer(encoded_input))

模型編譯

autoencoder.compile(optimizer='adadelta',loss='binary_crossentropy')

模型訓(xùn)練

autoencoder.fit(X_train,X_train,epochs=50,batch_size=256,shuffle=True,validation_data=(X_test,X_test))

預(yù)測(cè)

encoded_imgs = encoder.predict(X_test)

decoded_imgs = deconder.predict(encoded_imgs)

數(shù)據(jù)可視化

n = 10
for i in range(n):
 ax = plt.subplot(2,n,i+1)
 plt.imshow(X_test[i].reshape(28,28))
 plt.gray()
 ax.get_xaxis().set_visible(False)
 ax.get_yaxis().set_visible(False)
 
 ax = plt.subplot(2,n,i+1+n)
 plt.imshow(decoded_imgs[i].reshape(28,28))
 plt.gray()
 ax.get_xaxis().set_visible(False)
 ax.get_yaxis().set_visible(False)
plt.show()

完成代碼

from keras.layers import Input,Dense
from keras.models import Model 
from keras.datasets import mnist
import numpy as np 
import matplotlib.pyplot as plt 
 
(X_train,_),(X_test,_) = mnist.load_data()
 
X_train = X_train.astype('float32')/255.
X_test = X_test.astype('float32')/255.
X_train = X_train.reshape((len(X_train),-1))
X_test = X_test.reshape((len(X_test),-1))
 
encoding_dim = 32
input_img = Input(shape=(784,))
 
encoded = Dense(encoding_dim,activation='relu')(input_img)
decoded = Dense(784,activation='relu')(encoded)
 
autoencoder = Model(inputs = input_img,outputs=decoded)
encoder = Model(inputs=input_img,outputs=encoded)
 
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
deconder = Model(inputs=encoded_input,outputs = decoder_layer(encoded_input))
 
autoencoder.compile(optimizer='adadelta',loss='binary_crossentropy')
autoencoder.fit(X_train,X_train,epochs=50,batch_size=256,shuffle=True,validation_data=(X_test,X_test))
 
encoded_imgs = encoder.predict(X_test)
decoded_imgs = deconder.predict(encoded_imgs)
 
##via
n = 10
for i in range(n):
 ax = plt.subplot(2,n,i+1)
 plt.imshow(X_test[i].reshape(28,28))
 plt.gray()
 ax.get_xaxis().set_visible(False)
 ax.get_yaxis().set_visible(False)
 
 ax = plt.subplot(2,n,i+1+n)
 plt.imshow(decoded_imgs[i].reshape(28,28))
 plt.gray()
 ax.get_xaxis().set_visible(False)
 ax.get_yaxis().set_visible(False)
plt.show()

以上這篇keras自動(dòng)編碼器實(shí)現(xiàn)系列之卷積自動(dòng)編碼器操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 自動(dòng)監(jiān)控最新郵件并讀取的操作

    python 自動(dòng)監(jiān)控最新郵件并讀取的操作

    這篇文章主要介紹了python 自動(dòng)監(jiān)控最新郵件并讀取的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • jupyter note 實(shí)現(xiàn)將數(shù)據(jù)保存為word

    jupyter note 實(shí)現(xiàn)將數(shù)據(jù)保存為word

    這篇文章主要介紹了jupyter note 實(shí)現(xiàn)將數(shù)據(jù)保存為word,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python編程基礎(chǔ)之輸入與輸出

    Python編程基礎(chǔ)之輸入與輸出

    這篇文章主要為大家介紹了Python輸入與輸出,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • python發(fā)送json參數(shù)的實(shí)例代碼

    python發(fā)送json參數(shù)的實(shí)例代碼

    在寫(xiě)腳本的過(guò)程中,除了發(fā)送form表單參數(shù)之外,我們還會(huì)發(fā)送json格式的參數(shù)。那么碰見(jiàn)json格式要怎么發(fā)送呢,這篇我們來(lái)解決這個(gè)問(wèn)題,需要的朋友可以參考下
    2019-10-10
  • Django使用詳解:ORM 的反向查找(related_name)

    Django使用詳解:ORM 的反向查找(related_name)

    今天小編就為大家分享一篇Django使用詳解:ORM 的反向查找(related_name),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 基于Python編寫(xiě)一個(gè)中秋節(jié)嫦娥投食小游戲

    基于Python編寫(xiě)一個(gè)中秋節(jié)嫦娥投食小游戲

    今天給大家?guī)?lái)的是給玉兔投喂月餅的小游戲。八月十五中秋夜晚,讓我們對(duì)著月亮許愿:希望我們?cè)谝夂驮谝馕覀兊娜耍T邪避退、百事無(wú)忌、平安喜樂(lè)、萬(wàn)事勝意。提前祝大家中秋節(jié)快樂(lè)
    2022-09-09
  • python爬蟲(chóng)智能翻頁(yè)批量下載文件的實(shí)例詳解

    python爬蟲(chóng)智能翻頁(yè)批量下載文件的實(shí)例詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲(chóng)智能翻頁(yè)批量下載文件的實(shí)例詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • Python實(shí)現(xiàn)釘釘發(fā)送報(bào)警消息的方法

    Python實(shí)現(xiàn)釘釘發(fā)送報(bào)警消息的方法

    今天小編就為大家分享一篇Python實(shí)現(xiàn)釘釘發(fā)送報(bào)警消息的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 利用Python展示文件下載進(jìn)度條

    利用Python展示文件下載進(jìn)度條

    這篇文章主要介紹了Python展示文件下載進(jìn)度條,requests庫(kù)相信大家都用過(guò),做接口測(cè)試少不了它。其實(shí)我們平時(shí)下載文件,也可以用requests做到的,通過(guò)一些地址,下面我們就來(lái)看看具體是什么樣的地址及詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 舉例講解Python的lambda語(yǔ)句聲明匿名函數(shù)的用法

    舉例講解Python的lambda語(yǔ)句聲明匿名函數(shù)的用法

    匿名函數(shù)現(xiàn)在已經(jīng)成了各大編程語(yǔ)言爭(zhēng)相標(biāo)配的熱門(mén)特性,無(wú)需用函數(shù)名來(lái)定義函數(shù)的方式在很多場(chǎng)合下書(shū)寫(xiě)起來(lái)十分炫酷,這里我們就來(lái)舉例講解Python的lambda語(yǔ)句聲明匿名函數(shù)的用法
    2016-07-07

最新評(píng)論

蓬莱市| 尤溪县| 泗洪县| 田阳县| 来凤县| 兰西县| 时尚| 电白县| 丹阳市| 尼木县| 长治市| 利川市| 孟津县| 靖边县| 黑龙江省| 宁城县| 商河县| 合水县| 南靖县| 奉节县| 南开区| 永泰县| 洞口县| 苍溪县| 富民县| 荣成市| 英德市| 叙永县| 丹寨县| 正宁县| 乐陵市| 仁化县| 丰城市| 利辛县| 苍南县| 葫芦岛市| 中牟县| 镇宁| 专栏| 高陵县| 三亚市|