上课代码(备用版) |
您所在的位置:网站首页 › 导出部分表格 › 上课代码(备用版) |
from tensorflow.keras.models import Sequential, Model from tensorflow.keras.layers import Input, Embedding, Dense, Activation, SimpleRNN, Flatten, LSTM from tensorflow.keras import losses, optimizers 导入TensorFlow Keras库中的Sequential、Model、Input、Embedding、Dense、Activation、SimpleRNN、Flatten、LSTM等模块和losses、optimizers等子模块。 hidden_size = 256 vocab_size = 10000 定义隐藏层的大小为256,词汇表的大小为10000。 inp = Input(shape=(32,)) x = Embedding(vocab_size, hidden_size)(inp) x = SimpleRNN(hidden_size)(x) x = Flatten()(x) x = Dense(vocab_size)(x) pred = Activation('softmax')(x) 定义输入层,输入形状为(32,)。使用嵌入层将输入映射到hidden_size维度的向量上,然后使用简单循环神经网络层对向量序列进行处理。接着通过展平层将输出转化为一维向量,再通过全连接层将向量映射到词汇表大小的向量上。最后,用softmax函数激活输出。 model = Model(inp, pred) model.summary() 定义模型,并输出模型的摘要信息。 from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split(X_digit, Y_digit, test_size=0.2, random_state=0) 从sklearn库中导入train_test_split方法,将数据集分为训练集和测试集。 model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizers.Adam(learning_rate=0.001)) model.fit(X_train, Y_train, validation_data=(X_test, Y_test), batch_size=10000, epochs=10) 编译模型,使用稀疏分类交叉熵损失函数和Adam优化器进行训练。使用训练集和测试集进行训练,每批处理10000个样本,共进行10轮迭代。 sample_text = ['床', '前', '明'] print(sample_text) 定义一个文本样本,并输出该样本。 tokenizer = Tokenizer(num_words=vocab_size) tokenizer.fit_on_texts(sample_text) sample_index = tokenizer.texts_to_sequences(sample_text) print(sample_index) 使用Tokenizer将文本转化为序列,并将序列输出。 word_prob = model.predict(np.array(sample_index).reshape(1, 3))[0] print(tokenizer.index_word[word_prob.argmax()], word_prob.max()) 将序列输入到模型中进行预测,并输出预测结果对应的词汇表中的词语和概率值 ``` import numpy as np import pandas as pd poems_text = pd.read_table('poems_clean.txt', header=None) poems_text.columns = ["text"] poems_text.head() ``` 导入NumPy和Pandas库,读取名为'poems_clean.txt'的文本文件,将其转换为Pandas数据框,并命名列名为"text"。最后输出数据框的前几行。 ``` poems_new = [] for line in poems_text['text']: title, poem = line.split(':') poem = poem.replace('\n', '') poems_new.append(list(poem)) XY = [] for poem in poems_new: for i in range(len(poem) - 3): x1 = poem[i] x2 = poem[i+1] x3 = poem[i+2] y = poem[i+3] XY.append([x1, x2, x3, y]) print("原始诗句:") print(poems_text['text'][3864]) print("训练数据:") print(["X1", "X2", "X3", "y"]) for i in range(132763, 132773): print(xy[i]) ``` 对读取的文本进行预处理,将每个句子分成标题和正文两部分,去除正文中的换行符并将正文转换为列表形式。然后将每个句子拆分成长度为4的序列,前三个元素作为输入X,最后一个元素作为输出Y。最后输出一些训练数据,包括X和Y。 ``` from keras.preprocessing.text import Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(poems_new) vocab_size = len(tokenizer.word_index) + 1 print(tokenizer.word_index) XY_digit = np.array(tokenizer.texts_to_sequences(XY)) X_digit = XY_digit[:, :3] Y_digit = XY_digit[:, 3] ``` 从Keras库中导入Tokenizer模块,使用它将处理后的文本转换为序列,得到词汇表大小。然后将训练数据中的X和Y转换为数字形式。 ``` for i in range(132763, 132773): print("{: |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |