python keras基于LSTM网络训练一个伪原创文章人工智能模型代码

代码语言:python

所属分类:人工智能

代码描述:python keras基于LSTM网络训练一个伪原创文章人工智能模型代码

代码标签: python keras LSTM 网络 人工 智能 伪原创

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import numpy
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
from tensorflow.keras.callbacks import ModelCheckpoint
from tensorflow.python.keras.utils import np_utils

# 读取txt文件
# filename = 'article.txt'
# with open(filename, 'r', encoding='utf-8') as f:
raw_text ="Keras是一个高级的神经网络API,利用它能够轻松地搭建一些复杂的神经网络模型,是一个不错的深度学习框架。对于刚才得到的旅游点评,为了能够生成其他的旅游点评(人类可读),我们将会用到LSTM模型,之所以使用这个模型,是因为LSTM具有长短时记忆功能,能够很好地处理文本中的文字之间的联系,而不是将文字看成是独立的个体。在搭建LSTM模型之前,我们需要做一些准备工作。首先我们需要将每个文字对应到一个数字,该模型的输入特征向量为前10个文字对应的数字组成的向量,目标变量为该10个文字的下一个文字对应的数字。该txt文件中一共有1949个文字(包括汉子和标点符号),按照我们的处理模式,共有41402个样本,将这些样本传入到LSTM模型中。我们建立的模型很简单,先是一个LSTM层,利用含有256个LSTM结构,然后是一个Dropout层,能有效防止模型发生过拟合,最后是Softmax层,将它转化为多分类的问题,采用交叉熵作为模型的损失函数。"

# 创建文字和对应数字字典
chars = sorted(list(set(raw_text)))
char_to_int = dict((c, i) for i, c in enumerate(chars))
int_to_char = dict((i, c) for i, c in enumerate(chars))

# 对加载数据做总结
n_chars = len(raw_text)
n_vocab = len(chars)
print("总的文字数:", n_chars)
print("总的文字类别:", n_vocab)


# 生成数据集,转化为输入向量和输出向量
seq_length = 10
dataX = []
dataY = []
for i in range(0, n_chars - seq_length, 1):
    seq_in = raw_text[i: i + seq_length]	# 输入前10个字
    seq_out = raw_text[i + seq_length]		# 输出后 1个字
    dataX.append([char_to_int[char] for char in seq_in]) 	# 将字转化成对应的序号
    dataY.append(char_to_int[seq_out])
n_patterns = len(dataX) 					# 数据集的大小
print("Total Patterns: ", n_patterns)

# 将X重新转化为[samples, time_steps, features]形状
X = numpy.reshape(dataX, (n_patterns, seq_length, 1))

X = X / n_vocab

y = np_utils.to_categorical(dataY)

# 定义LSTM
model = Sequential()
model.add(LSTM(256, input_shape=(X.shape[1], X.shape[2])))   # 输入维度(10, 1)
model.add(Dropout(0.2))
model.add(Dense(y.shape[1], activation='softmax'))
model.compile(loss='categorical_crossentropy', .........完整代码请登录后点击上方下载按钮下载查看

网友评论0