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