Python深度學習 學習筆記(十七)

2021-09-26 01:39:38 字數 4685 閱讀 5964

結合 cnn 和 rnn 來處理長序列

運用一維卷積與迴圈層對文字進行學習,這裡我們依然拿耶拿的天氣資料進行舉例。

import os

data_dir =

'c:\\users\\administrator\\desktop\\keras_learn\\jena_climate'

fname = os.path.join(data_dir,

'jena_climate_2009_2016.csv'

)f =

open

(fname,encoding=

'utf-8'

)data = f.read(

)f.close(

)lines = data.split(

'\n'

)header = lines[0]

.split(

',')

#csv檔案

lines = lines[1:

]import numpy as np

float_data = np.zeros(

(len

(lines)

,len

(header)-1

))#第乙個元素是記錄的時間,不是學習的內容

for i,line in

enumerate

(lines)

: values =

[float

(x)for x in line.split(

',')[1

:]] float_data[i,:]

= values

mean = float_data[

:200000

].mean(axis=0)

float_data -= mean

std = float_data[

:200000

].std(axis=0)

float_data /= std

defgenerator

(data, lookback, delay, min_index, max_index,

shuffle=

false

, batch_size=

128, step=6)

:if max_index is

none

: max_index =

len(data)

- delay -

1 i = min_index + lookback

while1:

if shuffle:

rows = np.random.randint(

min_index + lookback, max_index, size=batch_size)

else

:if i + batch_size >= max_index:

i = min_index + lookback

rows = np.arange(i,

min(i + batch_size, max_index)

) i +=

len(rows)

samples = np.zeros(

(len

(rows)

, lookback // step,

data.shape[-1

])) targets = np.zeros(

(len

(rows),)

)for j, row in

enumerate

(rows)

: indices =

range

(rows[j]

- lookback, rows[j]

, step)

samples[j]

= data[indices]

targets[j]

= data[rows[j]

+ delay][1

]#目標選取隔一天的溫度

yield samples, targets

lookback =

1440

#10天

step =

3delay =

144#1天

batch_size =

128train_gen = generator(float_data,

lookback=lookback,

delay=delay,

min_index=0,

max_index=

200000

, shuffle=

true

, step=step,

batch_size=batch_size)

val_gen = generator(float_data,

lookback=lookback,

delay=delay,

min_index=

200001

, max_index=

300000

, step=step,

batch_size=batch_size)

test_gen = generator(float_data,

lookback=lookback,

delay=delay,

min_index=

300001

, max_index=

none

, step=step,

batch_size=batch_size)

val_steps =

(300000

-200001

- lookback)

// batch_size

#類似與卷積層經過卷積核後的大小計算公式

test_steps =

(len

(float_data)

-300001

- lookback)

// batch_size

在前面幾節提到過,如不理解可以翻到之前學習筆記檢視。

特別注意,以上**中我將step從6改為3,這意味著從每乙個小時提取一次資料改為每半個小時,其目的是為了更好的學習。

從驗證損失來看,這種架構的效果不如只用正則化 gru,但速度要快很多。它檢視了兩倍的資料量,在本例中可能不是非常有用,但對於其他資料集可能非常重要。

Python學習筆記(十)

mylab 專案實戰 1 在templates中乙個index.html我需要引入當前資料夾中的另乙個網頁,我直接在index的 中引入 html無效 最後,我在這個專案的主目錄下的urls中進行設定,可行 2 在呼叫網頁的時候,進行views設定,就已經把處理函式給選定了 直接在views,用re...

python學習筆記十

字典遍歷 集合函式 copy僅拷貝物件本身,而不對中的子物件進行拷貝,故對子物件進行修改也會隨著修改。dict1 dict2 dict1 dict3 dict1.copy dict1 user root dict1 num remove 1 print dict1 print dict2 print...

Python深度學習 學習筆記(十三)

上一節,我們提到了rnn已經rnn在keras中最簡單的層 rnn。但 rnn由於過於簡化,沒有實用價值。實際上,它不可以學到長期依賴。原因在於梯度消失問題,當運用比較多的非迴圈層時,而讓網變得無法訓練。同樣的問題其實也普遍發生在密集連線層。今天介紹的lstm long short term mem...