keras 文字序列的相關api

2022-09-13 18:15:09 字數 3386 閱讀 3635

1、word_tokenizer = tokenizer(max_word_nums)    max_word_nums設定詞典的最大值,為乙個int型數值

2、word_tokenizer.fit_on_texts(question_data["words"])      解釋:fit_on_texts(texts)使用一系列文件來生成token詞典,texts為list類,每個元素為乙個文件。但是在這裡直接傳入了乙個    pandas.series的型別,也是可以用的。

3、  word_embedding_data = np.concatenate(

(np.zeros(shape=(1, word_embedding_data.shape[1]), dtype=np.float64),

word_embedding_data.loc[list(word_tokenizer.word_index.keys())[:max_word_nums]].values

),axis=0

) 解釋:np.zeros(shape=(1, word_embedding_data.shape[1]), dtype=np.float64),         生成乙個形狀為[1,word_embedding_data第二維大小的向量,即每行維度的大小,即多少列]

word_embedding_data.loc[list(word_tokenizer.word_index.keys())[:max_word_nums]].values     word_index 乙個dict,儲存所有word對應的編號id,從1開始. 只獲取【0~10000】鍵值,其中排序方式是按照詞頻降序排列的,原始資料中共有words兩萬多個,但是這裡只取了最常出現的一萬個。最後得到的是word的list,然後用loc定位到這些word,得到乙個dataframe,最後用values,獲得word的編碼值。

4、word_input1 = input(shape=(word_seq_len,), dtype="int32")    解釋:input(shape=none,batch_shape=none,name=none,dtype=k.floatx(),sparse=false,tensor=none),用來例項化乙個keras張量,shape: 形狀元組(整型),不包括batch size。for instance, shape=(32,) 表示了預期的輸入將是一批32維的向量。 

5、embedding_layer = embedding(

input_dim=word_embedding_data.shape[0],

output_dim=word_embedding_data.shape[1],

weights=[word_embedding_data],

input_length=word_seq_len,

trainable=false

解釋:這裡的input_dim和output_dim分別是矩陣w的行數和列數,weights就是權重矩陣w,input_length是句子長度的上限,trainable=false是因為詞向量是已經訓練完的,所以不要在訓練    了,,input_length:當輸入序列的長度固定時,該值為其長度。如果要在該層後接flatten層,然後接dense層,則必須指定該引數,否則dense層的輸出維度無法自動推斷。 

嵌入層將正整數(下標)轉換為具有固定大小的向量,如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]]

6、diff = lambda(lambda x: k.abs(x[0] - x[1]))([merge_a, merge_b])

mult = lambda(lambda x: x[0] * x[1])([merge_a, merge_b])

這兩個函式非常有意思,首先lambda()是keras提供的函式,本函式用以對上一層的輸出施以任何theano/tensorflow表示式  

k.abs() 逐元素絕對值

([merge_a, merge_b]) 應該是匿名函式的一種呼叫方式,直接跟在lambda後面即可。

7、model = model(

inputs = [word_input1, word_input2],

outputs = pred

)  model.compile(

optimizer="adam",

loss="binary_crossentropy",

metrics=["acc"]

)解釋:

8、early_stop = earlystopping("val_loss", patience=10)

9、check_point = modelcheckpoint("./log/%s.cnn..hdf5" % (datetime.now().strftime("%y%m%d-%h%m%s")),

monitor="val_loss",

s**e_best_only=true,

s**e_weights_only=true

)解釋:該**函式將在每個epoch後儲存模型到filepath

filepath可以是格式化的字串,裡面的佔位符將會被epoch值和傳入on_epoch_endlogs關鍵字所填入

例如,filepath若為weights.}.hdf5,則會生成對應epoch和驗證集loss的多個檔案。

10、model_res = model.fit(

x=[train_word1, train_word2],

y=train_y,

batch_size=batch_size,

epochs=num_epoches,

validation_data=([dev_word1, dev_word2], dev_y),

shuffle=true,

callbacks=[early_stop, check_point]

)解釋:

本函式將模型訓練nb_epoch輪,其引數有:

fit函式返回乙個history的物件,其history.history屬性記錄了損失函式和其他指標的數值隨epoch變化的情況,如果有驗證集的話,也包含了驗證集的這些指標變化情況

11、test_pred = model.predict([test_word1, test_word2], batch_size=batch_size)

解釋:

predict(self, x, batch_size=32, verbose=0)

本函式按batch獲得輸入資料對應的輸出,其引數有:

函式的返回值是**值的numpy array

和路徑相關的API

需要標頭檔案 shlwapi.h bool pathfileexists lpctstr lpszpath 功能 檢查檔案 路徑是否存在 lptstr pathfindfilename lpctstr ppath 功能 獲得路徑中的檔名 例如 pathfilefilename c program f...

C C 路徑相關的API

1.加不加都一樣,就是指當前目錄 2.表示當前目錄的上級目錄,即當前的父目錄。這裡的當前目錄就是指.vcxproj和當前執行的.cpp檔案所在目錄,而不是.sln檔案所在目錄 注意 前面兩種在工程資料夾裡面執行時沒有問題的,但是打包成dll,被呼叫就行不通了 3.獲取當前執行檔案的路徑 不包括檔名 ...

任務相關的API函式 eTaskGetState

etaskgetstate 此函式用於查詢某個任務的執行狀態,比如 執行態,阻塞態,掛起態,就緒態等,返回值是個列舉型別.要使用函式巨集include etaskgetstate必須為1,此巨集在freertos.h 第202行 v9.0 函式原型如下 etaskstate etaskgetstat...