-
大小: 382KB文件類(lèi)型: .zip金幣: 2下載: 1 次發(fā)布日期: 2021-09-12
- 語(yǔ)言: Python
- 標(biāo)簽:
資源簡(jiǎn)介
利用keras模仿汪峰生成歌詞,這是一個(gè)keras中LSTM的入門(mén)實(shí)例。

代碼片段和文件信息
#?此文本用于生成,生成結(jié)果會(huì)在屏幕上直接輸出。
import?jieba
import?numpy?as?np
from?keras.models?import?Sequential
from?keras.layers?import?Dense
from?keras.layers?import?Dropout
from?keras.layers?import?LSTM?embedding
from?keras?import?optimizers
from?keras.utils?import?np_utils
#?使用jieba進(jìn)行分詞
f?=?open(‘train_data/new_wangfeng.txt‘?‘r‘)
all_str?=?f.read().replace(‘\n‘?‘‘).replace(‘?‘?‘‘)??#?去除空格
f.close()
cut_list?=?jieba.cut(all_str)
seg_list?=?[]??#?分詞后的文本數(shù)據(jù)
for?c?in?cut_list:
????seg_list.append(c)
#?生成one-hot
vocab?=?sorted(list(set(seg_list)))
word_to_int?=?dict((w?i)?for?i?w?in?enumerate(vocab))
int_to_word?=?dict((i?w)?for?i?w?in?enumerate(vocab))
n_words?=?len(seg_list)??#?總詞量
n_vocab?=?len(vocab)??#?詞表長(zhǎng)度
print(‘總詞匯量:‘?n_words)
print(‘詞表長(zhǎng)度:‘?n_vocab)
seq_length?=?100??#?句子長(zhǎng)度
dataX?=?[]
dataY?=?[]
for?i?in?range(0?n_words?-?seq_length?1):
????seq_in?=?seg_list[i:i?+?seq_length]
????seq_out?=?seg_list[i?+?seq_length]
????dataX.append([word_to_int[word]?for?word?in?seq_in])
????dataY.append(word_to_int[seq_out])
n_simples?=?len(dataX)
print(‘樣本數(shù)量:‘?n_simples)
X?=?np.reshape(dataX?(n_simples?seq_length))
y?=?np_utils.to_categorical(dataY)
#?網(wǎng)絡(luò)結(jié)構(gòu)
print(‘開(kāi)始構(gòu)建網(wǎng)絡(luò)‘)
model?=?Sequential()
model.add(embedding(n_vocab?512?input_length=seq_length))
model.add(LSTM(512?input_shape=(seq_length?512)?return_sequences=True))
#?model.add(Dropout(0.2))
model.add(LSTM(1024))
#?model.add(Dropout(0.2))
model.add(Dense(n_vocab?activation=‘softmax‘))
print(‘加載網(wǎng)絡(luò)‘)
filename?=?“weights-improvement=26-0.105659.hdf5“
model.load_weights(filename)
adam?=?optimizers.Adam(lr=0.001?beta_1=0.9?beta_2=0.999?epsilon=1e-08)
model.compile(loss=‘categorical_crossentropy‘?optimizer=adam)
#?生成種子
start?=?np.random.randint(0?len(dataX)?-?1)
pattern?=?dataX[start]
print(“Seed?:?“)
print(‘‘.join([int_to_word[value]?for?value?in?pattern]))
n_generation?=?400??#?生成的長(zhǎng)度
print(‘開(kāi)始生成,生成長(zhǎng)度為‘?n_generation)
finall_result?=?[]
for?i?in?range(n_generation):
????x?=?np.reshape(pattern?(1?len(pattern)))
????prediction?=?model.predict(x?verbose=0)[0]
????index?=?np.argmax(prediction)
????result?=?int_to_word[index]
????#?sys.stdout.write(result)
????finall_result.append(result)
????pattern.append(index)
????pattern?=?pattern[1:len(pattern)]
#?print(finall_result)
for?i?in?range(len(finall_result)):
????if?finall_result[i]?!=?‘?!?
????????print(finall_result[i]?end=‘‘)
????else:
????????print(‘?!?br/>
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-28?03:06??keras_lstm_generation-master\
?????文件??????????66??2018-01-28?03:06??keras_lstm_generation-master\.gitattributes
?????文件????????1357??2018-01-28?03:06??keras_lstm_generation-master\README.md
?????文件????????2609??2018-01-28?03:06??keras_lstm_generation-master\generation.py
?????文件????????2382??2018-01-28?03:06??keras_lstm_generation-master\main.py
?????文件??????341748??2018-01-28?03:06??keras_lstm_generation-master\result.png
?????目錄???????????0??2018-01-28?03:06??keras_lstm_generation-master\train_data\
?????文件????????6148??2018-01-28?03:06??keras_lstm_generation-master\train_data\.DS_Store
?????文件??????105725??2018-01-28?03:06??keras_lstm_generation-master\train_data\new_wangfeng.txt
?????文件?????????395??2018-01-28?03:06??keras_lstm_generation-master\train_data\preprocessing.py
?????文件???????97316??2018-01-28?03:06??keras_lstm_generation-master\train_data\wangfeng.txt
評(píng)論
共有 條評(píng)論