Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning Tensorflow中RNN和LSTM单元的语言建模_Machine Learning_Tensorflow_Neural Network_Deep Learning_Recurrent Neural Network - Fatal编程技术网

Machine learning Tensorflow中RNN和LSTM单元的语言建模

Machine learning Tensorflow中RNN和LSTM单元的语言建模,machine-learning,tensorflow,neural-network,deep-learning,recurrent-neural-network,Machine Learning,Tensorflow,Neural Network,Deep Learning,Recurrent Neural Network,我的语言建模RNN只预测“and”和“unknown”我的代码出了什么问题 这里我定义了超参数: num_epochs=300 总长度=长度(唯一句子)-4 截断的后支柱长度=30 状态_大小=100 num\u类=num\u有意义+1 回声步进=1 批量大小=32 vocab_length=len(解码器) num\u batches=总系列长度//批次大小//截断后的长度 学习率=0.01 旧的困惑=0 这里我生成数据(我的输入由Word2Vec计算的word embeddings lon

我的语言建模RNN只预测“and”和“unknown”我的代码出了什么问题

这里我定义了超参数:

num_epochs=300
总长度=长度(唯一句子)-4
截断的后支柱长度=30
状态_大小=100
num\u类=num\u有意义+1
回声步进=1
批量大小=32
vocab_length=len(解码器)
num\u batches=总系列长度//批次大小//截断后的长度
学习率=0.01
旧的困惑=0
这里我生成数据(我的输入由Word2Vec计算的word embeddings long 100给出):

def generateData():
uniqueSent=uniqueSent[0:len(uniqueSent)-4]
x_tr=np.array([model_ted[word]表示uniqueSent中的单词])
#沿给定轴滚动阵列元素。
#滚动超过最后一个位置的图元将在第一个位置重新引入。
x_tr=x_tr.重塑((100,批量大小,-1))#第一个索引变化最慢,子系列为行
x=x_tr.转置((1,2,0))
打印(“hi”)
新的索引列表[1:len(indexList)-4]
新的附加(indexList[len(indexList)-3])
y=np.数组(新的)
打印(len(y))
y=y。重塑((批次大小,-1))
返回(x,y)
定义占位符:

batchX\u占位符=tf.placeholder(tf.float32,[batch\u size,truncated\u backprop\u length,100])
batchY\u placeholder=tf.placeholder(tf.int32,[batch\u size,truncated\u backprop\u length])
W=tf.Variable(np.random.rand(state\u size,num\u classes),dtype=tf.float32)
b=tf.Variable(np.zeros((批处理大小,num\u类)),dtype=tf.float32)
W2=tf.Variable(np.random.rand(state\u size,num\u classes),dtype=tf.float32)
b2=tf.Variable(np.zeros((批处理大小,num\u类)),dtype=tf.float32)
输入和期望输出:

labels\u series=tf.transpose(批处理占位符)
标签\u系列=tf.unstack(批处理\u占位符,轴=1)
输入\u系列=批处理\u占位符
向前传球:

来自tensorflow.contrib.rnn.python.ops导入核心\u rnn\u单元\u impl
打印(tf.\U版本\U)
#cell=tf.contrib.rnn.basicrncell(状态大小)
cell=tf.contrib.rnn.BasicLSTMCell(state\u size,state\u为\u tuple=False)
打印(单元格状态大小)
init_state=tf.zeros([batch_size,cell.state_size])
输出,当前状态=tf.nn.dynamic(单元,输入系列,初始状态=初始状态)
iterable_输出=tf.unstack(输出,轴=1)
logits_series=[tf.matmul(state,W2)+b2表示iterable_输出中的状态]#广播加法
预测\u系列=[tf.nn.softmax(logits)用于logits\u系列中的logits]
损失=[tf.loss.sparse\u softmax\u cross\u熵(标签、逻辑)
对于logits,zip中的标签(logits\u系列,标签\u系列)]
总损失=tf.加上(损失)
训练步长=tf.train.AdamOptimizer(学习速率)。最小化(总损耗)
x、 y=生成数据()
del(车型)
培训:

将tf.Session(config=tf.ConfigProto(log\u device\u placement=True))作为sess:
sess.run(tf.initialize\u all\u variables())
损失清单=[]
打印(“开始”)
_当前状态=np.0((批量大小,2*状态大小))
#avevo genrateData fuori e-当前状态dentro
对于范围内的历元idx(num_历元):
打印(“新数据,历元”,历元\u idx)
对于范围内的批次idx(数量批次):
开始\u idx=批处理\u idx*截断的\u backprop\u长度
end\u idx=start\u idx+截断的\u backprop\u长度
batchX=x[:,开始\u idx:end\u idx,:]
batchY=y[:,开始\u idx:end\u idx]
_总损耗、列车步进、当前状态、预测系列=sess.run(
[总损耗、列车步进、当前状态、预测\u系列],
饮食={
batchX_占位符:batchX,
批处理\u占位符:批处理,
初始状态:\当前状态
})
损失列表。追加(\u总损失)
德尔(batchX)
德尔(批处理)
困惑=2**(总损失/截断后的长度)
印刷(困惑)
德尔(困惑)
_预测\u系列=np.数组(\u预测\u系列)
pr=_预测_系列。转置([1,0,2])
pr_ind=[]
对于pr[0]中的行:
pr_ind.append(np.argmax(行))
对于pr_ind中的索引:
打印(解码器[索引],end=”“)
德尔(公关部)
打印(“\n学习率:”,end=“”)
打印(学习率)