采用衍生产品背后的概念是什么?有趣的是,为了以某种方式教授系统,我们必须调整其权重.但是我们为什么要使用传递函数的推导来做到这一点.什么是推导,帮助我们.我知道推导是给定点的连续函数的斜率,但它与问题有什么关系.
artificial-intelligence neural-network recurrent-neural-network
我注意到api中已有批量规范化函数用于tensorflow.但我不明白的一件事是如何改变训练和测试之间的程序?
批量标准化在测试期间的行为与训练期间不同.具体而言,在训练期间使用固定的均值和方差.
某处有一些很好的示例代码吗?我看到了一些,但是使用范围变量会让人感到困惑
我正在尝试Tensorflow的例子.在一开始我遇到一些问题,我可以运行这个例子来训练ptb,现在我有一个训练有素的模型.
现在如何使用模型创建句子而无需每次都进行训练?
我正在使用像这样的命令来运行它 python ptb_word_lm.py --data_path=/home/data/ --model medium --save_path=/home/medium
有没有关于如何使用训练模型来制作句子的例子?
我试图弄清楚张量流代码的结构(r0.11),并且在理解RNN中使用的"state_is_tuple"参数(目前正在查看LSTM)时遇到问题.
在这篇文章中,当state_is_tuple = True时,如何设置TensorFlow RNN状态?据说state_is_tuple选项设置了隐藏神经元的状态,并且单元状态是否保存在元组中.
所以我的问题是:为什么这个参数存在?它用于什么,为什么我要打扰?在什么情况下我应该将其设置为True/False?
谢谢你的帮助!
我正在尝试使用Keras生成带有LSTM RNN的学习时间序列,因此我想预测一个数据点,并将其作为输入反馈以预测下一个,依此类推,以便我可以实际生成时间序列(例如给出2000个数据点,预测下一个2000)我正在尝试这样,但测试得分RMSE是1.28,预测基本上是一条直线
# LSTM for international airline passengers problem with regression framing
import numpy
import matplotlib.pyplot as plt
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
return numpy.array(dataX), numpy.array(dataY)
# fix …Run Code Online (Sandbox Code Playgroud) 我有一个使用预定义消息的聊天应用程序.数据库有大约80个预定义的对话,每个对话有5个可能的响应.为了澄清,这是一个例子:
Q: "How heavy is a polar bear?"
R1: "Very heavy?"
R2: "Heavy enough to break the ice."
R3: "I don't know. Silly question."
R4: ...
R5: ...
Run Code Online (Sandbox Code Playgroud)
假设用户将选择R3:"我不知道.傻问题"
然后该响应将有5个可能的响应,例如:
R1: "Why is that silly?"
R2: "You're silly!"
R3: "Ugh. I'm done talking to you now."
R4: ...
R5: ...
Run Code Online (Sandbox Code Playgroud)
每个回复都有5个可能的回复; 在此之后,对话将结束,并且必须开始新的对话.
所以回顾一下,我有80个手动编写的对话,每个对话有5个可能的响应,深入3层=总共10,000条消息.
我的问题:使用机器学习自动生成更多对话的最准确方法是什么?
我研究了RNN:Karparthy的RNN帖子.虽然RNN可以基于旧内容制作新内容,但新内容是相当随机且无意义的.
为了更好地理解这些对话的使用,请访问http://getvene.com/并观看预览视频.
text artificial-intelligence machine-learning generator recurrent-neural-network
我正在尝试在Pytorch中实现seq2seq模型,并且在批处理方面遇到了一些问题。例如,我有一批数据,其维度为
[batch_size,sequence_lengths,encoding_dimension]
其中批次中每个示例的序列长度都不同。
现在,我设法通过将批处理中的每个元素填充到最长序列的长度来进行编码。
这样,如果我将与上述形状相同的批次作为输入输入到我的网络中,则会得到以下输出:
形状的输出
[batch_size, sequence_lengths, hidden_layer_dimension]形状的隐藏状态
[batch_size, hidden_layer_dimension]细胞状态,形状
[batch_size, hidden_layer_dimension]
现在,从输出中,我为每个序列获取最后一个相关元素,即沿着sequence_lengths维度的元素与序列的最后一个非填充元素相对应。因此,我得到的最终输出是定型的[batch_size, hidden_layer_dimension]。
但是现在我有从这个向量解码它的问题。如何处理同一批中不同长度的序列的解码?我试图用Google搜索它,发现了这个问题,但是他们似乎并没有解决这个问题。我本来打算对整个批处理逐个元素进行处理,但是我遇到了传递初始隐藏状态的问题,因为来自编码器的状态是形状[batch_size, hidden_layer_dimension],而来自解码器的状态是形状[1, hidden_layer_dimension]。
我想念什么吗?谢谢您的帮助!
我正在使用NMT创建在康奈尔电影对话语料库上受过训练的聊天机器人。
我的代码部分来自https://github.com/bshao001/ChatLearner和https://github.com/chiphuyen/stanford-tensorflow-tutorials/tree/master/assignments/chatbot
在训练过程中,我打印了从批处理中馈送到解码器的随机输出答案,以及我的模型预测观察到学习进度的相应答案。
我的问题:仅经过约4次训练,该模型就学会了在<\s>每个时间步输出EOS令牌()。即使训练继续进行,它也始终将其输出作为其响应(由logits的argmax确定)。该模型偶尔会偶尔输出一系列周期作为其答案。
我还在训练过程中打印了前10个logit值(不仅是argmax),以查看其中是否存在正确的单词,但这似乎是在预测词汇中最常见的单词(例如i,you,?,。 )。在培训期间,即使是前10个字词也没有太大变化。
我已经确保正确计算编码器和解码器的输入序列长度,并相应地添加了SOS(<s>)和EOS(也用于填充)令牌。我还在损失计算中执行屏蔽。
这是一个示例输出:
训练迭代1:
Decoder Input: <s> sure . sure . <\s> <\s> <\s> <\s> <\s> <\s> <\s>
<\s> <\s>
Predicted Answer: wildlife bakery mentality mentality administration
administration winston winston winston magazines magazines magazines
magazines
Run Code Online (Sandbox Code Playgroud)
...
训练迭代4:
Decoder Input: <s> i guess i had it coming . let us call it settled .
<\s> <\s> <\s> <\s> <\s>
Predicted Answer: <\s> …Run Code Online (Sandbox Code Playgroud) 我试图复制tf.nn.dynamic_rnn使用低级API 的行为tf.nn.raw_rnn.为了做到这一点,我使用相同的数据补丁,设置随机种子并使用相同的hparams来创建细胞和递归神经网络.但是,从两个实现生成的输出彼此不相等.以下是数据和代码.
在data与lengths:
X = np.array([[[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [0.0, 0.0, 0.0]], [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]], [[1.1, 2.2, 3.3], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]], dtype=np.float32)
X_len = np.array([2, 3, 1], dtype=np.int32)
Run Code Online (Sandbox Code Playgroud)
该tf.nn.dynamic_rnn实施:
tf.reset_default_graph()
tf.set_random_seed(42)
inputs = tf.placeholder(shape=(3, None, 3), dtype=tf.float32)
lengths = tf.placeholder(shape=(None,), dtype=tf.int32)
lstm_cell = tf.nn.rnn_cell.LSTMCell(5)
outputs, state = tf.nn.dynamic_rnn(inputs=inputs, sequence_length=lengths, cell=lstm_cell, dtype=tf.float32, initial_state=lstm_cell.zero_state(3, dtype=tf.float32), time_major=True)
outputs_reshaped = tf.transpose(outputs, perm=[1, 0, …Run Code Online (Sandbox Code Playgroud) python deep-learning lstm tensorflow recurrent-neural-network
阅读Andrej Karpathy在2015年发布的“递归神经网络的不合理有效性”一文,其中有一个生成LaTeX代码的部分:
代数几何(乳胶)
以上结果表明,该模型实际上非常擅长学习复杂的句法结构。这些结果给我留下了深刻的印象,我的同伴(贾斯汀·约翰逊)(Justin Johnson)决定进一步推向结构化领域,并掌握了这本关于代数堆栈/几何的书。我们下载了原始的Latex源文件(一个16MB的文件)并训练了多层LSTM。令人惊讶的是,生成的采样乳胶几乎可以编译。我们不得不手动介入并解决了一些问题,但随后看来数学似乎很合理,这非常令人惊讶:
(强调我的)
现代网络可以使用哪些技术来/ force /任何提议的输出/ did /进行编译?
您是否可以在任何输出上简单地运行(慢速)编译器过程(喜欢!),并对失败的对象应用大量的罚款条款?一个小的刑期?
我的问题是:
文献中是否对此过程有一个通用术语?我可以想象用户可能想要添加其他种类的约束,但是如果没有有效地学习一个并行网络将模式验证所进行的任何操作都置于黑盒中,则诸如“通用模式验证”之类的东西似乎很有挑战性,而且不是很清楚。
(1)是什么的Keras / Tensorflow实现吗?
python ×6
lstm ×5
tensorflow ×5
keras ×2
generator ×1
parameters ×1
python-2.7 ×1
pytorch ×1
seq2seq ×1
text ×1
validation ×1