标签: recurrent-neural-network

如何在我的时间序列数据中使用Theanets LSTM RNN?

我有一个简单的数据框,由一列组成.在该列中有10320个观测值(数值).我正在通过将数据插入到具有每个200个观测值的窗口的图中来模拟时间序列数据.这是绘图的代码.

import matplotlib.pyplot as plt
from IPython import display
fig_size = plt.rcParams["figure.figsize"]
import time
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
fig, axes = plt.subplots(1,1, figsize=(19,5))
df = dframe.set_index(arange(0,len(dframe)))
std = dframe[0].std() * 6
window = 200
iterations = int(len(dframe)/window)
i = 0
dframe = dframe.set_index(arange(0,len(dframe)))
while i< iterations:
    frm = window*i
    if i == iterations:
        to = len(dframe)
    else:
        to = frm+window
    df = dframe[frm : to]
    if len(df) > 100:
        df = df.set_index(arange(0,len(df)))
        plt.gca().cla() 
        plt.plot(df.index, df[0])
        plt.axhline(y=std, xmin=0, xmax=len(df[0]),c='gray',linestyle='--',lw …
Run Code Online (Sandbox Code Playgroud)

theano lstm recurrent-neural-network

6
推荐指数
1
解决办法
240
查看次数

在神经网络中添加辍学的地方?

我已经看到有关神经网络不同部分的丢失的描述:

  1. 重量矩阵中的丢失,

  2. 在矩阵乘法之后和relu之前隐藏层中的丢失,

  3. relu后隐藏层中的丢失,

  4. 并且在softmax函数之前输出分数中的丢失

我对应该在哪里执行辍学感到有点困惑.有人可以帮忙详细说明吗?谢谢!

neural-network conv-neural-network recurrent-neural-network dropout

6
推荐指数
1
解决办法
2264
查看次数

如何编码序列以在keras中对RNN进行排序?

我正在尝试编写序列以在keras中对RNN进行排序.我使用我从网上理解的内容编写了这个程序.我首先表征然后将文本转换的文本成序列和填充,以形成特征变量X.获得目标变量Y,首先将x向左移动然后填充它.最后,我将我的功能和目标变量提供给了我的LSTM模型.

这是我为此目的用keras编写的代码.

from keras.preprocessing.text import Tokenizer,base_filter
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Dense, Activation,Dropout,Embedding
from keras.layers import LSTM


def shift(seq, n):
    n = n % len(seq)
    return seq[n:] + seq[:n]

txt="abcdefghijklmn"*100

tk = Tokenizer(nb_words=2000, filters=base_filter(), lower=True, split=" ")
tk.fit_on_texts(txt)
x = tk.texts_to_sequences(txt)
#shifing to left
y = shift(x,1)

#padding sequence
max_len = 100
max_features=len(tk.word_counts)
X = pad_sequences(x, maxlen=max_len)
Y = pad_sequences(y, maxlen=max_len)

#lstm model
model = Sequential()
model.add(Embedding(max_features, 128, …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras recurrent-neural-network sequence-to-sequence

6
推荐指数
1
解决办法
4788
查看次数

TensorFlow dynamic_rnn regressor:ValueError维度不匹配

我想为回归构建一个玩具LSTM模型.对于初学者来说,这个漂亮的教程已经太复杂了.

给定一系列长度time_steps,预测下一个值.考虑time_steps=3和序列:

array([
   [[  1.],
    [  2.],
    [  3.]],

   [[  2.],
    [  3.],
    [  4.]],
    ...
Run Code Online (Sandbox Code Playgroud)

目标值应为:

array([  4.,   5., ...
Run Code Online (Sandbox Code Playgroud)

我定义了以下模型:

# Network Parameters
time_steps = 3 
num_neurons= 64 #(arbitrary)
n_features = 1

# tf Graph input
x = tf.placeholder("float", [None, time_steps, n_features])
y = tf.placeholder("float", [None, 1])

# Define weights
weights = {
   'out': tf.Variable(tf.random_normal([n_hidden, 1]))
} 
biases = {
   'out': tf.Variable(tf.random_normal([1]))
}

#LSTM model
def lstm_model(X, weights, biases, learning_rate=0.01, optimizer='Adagrad'):

  # …
Run Code Online (Sandbox Code Playgroud)

python neural-network lstm tensorflow recurrent-neural-network

6
推荐指数
1
解决办法
4894
查看次数

dynamic_rnn中的swap_memory允许准无限序列?

我试图用长字符序列标记字母.数据的固有结构要求我使用双向方法.

此外,基于这个想法,我需要在每个时间步进入隐藏状态,而不仅仅是最后一个.

为了尝试这个想法,我采用了固定长度的方法.我目前使用随机件的批量说每60个字符了我更长的时间序列,并且运行我的手工双向分类zero_state作为initial_state每个60封件.

这工作得很好,但显然不是很完美,因为实际上序列更长,并且从我从原始源中随机剪切的部分左右的信息丢失了.

现在为了推进我想要使用整个序列.它们的长度差异很大,我无法将整个序列(进一步批量)放到GPU上.

我在dynamic_rnn文档中找到了swap_memory - 参数.那会有帮助吗?

我没有找到任何有助于我理解的文档.而且我不能轻易地自己尝试这个,因为我需要在每个时间步都访问隐藏状态,因此我编写了当前图形而不使用任何更高级别的包装器(例如dynamic_rnn).尝试这一点需要我从包装器中获取所有中间状态,据我所知,这是很多工作要实现的.

在经历尝试这个问题的麻烦之前,我很想确定这确实会解决我的记忆问题.Thx任何提示!

lstm tensorflow recurrent-neural-network

6
推荐指数
1
解决办法
905
查看次数

如何在Tensorflow中使RNN单元的权重无法处理?

我正在尝试制作一个Tensorflow图,其中图的一部分已经预先训练并在预测模式下运行,而其余的训练.我已经定义了我预先训练好的细胞:

rnn_cell = tf.contrib.rnn.BasicLSTMCell(100)

state0 = tf.Variable(pretrained_state0,trainable=False)
state1 = tf.Variable(pretrained_state1,trainable=False)
pretrained_state = [state0, state1]

outputs, states = tf.contrib.rnn.static_rnn(rnn_cell, 
                                            data_input,
                                            dtype=tf.float32,
                                            initial_state = pretrained_state)
Run Code Online (Sandbox Code Playgroud)

设置初始变量trainable=False没有帮助.这些仅用于初始化权重,因此权重仍然会发生变化.

我仍然需要在训练步骤中运行优化器,因为我的模型的其余部分需要训练.但是,如何防止优化器更改此rnn单元格中的权重?

是否有rnn_cell相当于trainable=False

machine-learning deep-learning tensorflow recurrent-neural-network

6
推荐指数
1
解决办法
921
查看次数

用于文本生成的Keras LSTM不断重复一行或一个序列

我大致遵循了本教程:

https://machinelearningmastery.com/text-generation-lstm-recurrent-neural-networks-python-keras/

一个显着的区别是,我使用2个LSTM层与辍学。我的数据集是不同的(音乐数据集是abc表示法)。我确实生成了一些歌曲,但是在生成过程中经过一定数量的步骤(可能从30步到几百步)之后,LSTM不断重复生成完全相同的序列。例如,它曾经陷入了为歌曲生成URL的困境:

F:http : //www.youtube.com/watch?v=JPtqU6pipQI

等等 ...

它曾经一度被困于生成相同的两首歌(这两首歌是大约300个字符的序列)。在开始时,它产生了3-4个好的乐曲,但是之后,它几乎无限地保持了两首歌曲的再生。

我想知道,是否有人对可能发生的事情有所了解?

我想澄清的是,无论是重复还是不重复,生成的任何序列似乎都是新的(模型没有记忆性)。验证损失和培训损失按预期减少。Andrej Karpathy能够生成包含数千个字符的文档,但我找不到这种无限期卡住的模式。

http://karpathy.github.io/2015/05/21/rnn-efficiency/

python deep-learning lstm keras recurrent-neural-network

6
推荐指数
1
解决办法
1836
查看次数

Tensorflow中MultiRNNCell和stack_bidirectional_dynamic_rnn之间的区别

我正在建立一个堆叠多个LSTM的动态RNN网络.我看到有两种选择

# cells_fw and cells_bw are list of cells eg LSTM cells
stacked_cell_fw = tf.contrib.rnn.MultiRNNCell(cells_fw)
stacked_cell_bw = tf.contrib.rnn.MultiRNNCell(cells_bw)

output = tf.nn.bidirectional_dynamic_rnn(
          stacked_cell_fw, stacked_cell_bw, INPUT,
          sequence_length=LENGTHS, dtype=tf.float32)
Run Code Online (Sandbox Code Playgroud)

VS

output = tf.contrib.rnn.stack_bidirectional_dynamic_rnn(cells_fw, cells_bw, INPUT,
sequence_length=LENGTHS, dtype=tf.float32)
Run Code Online (Sandbox Code Playgroud)

两种方法有什么区别,哪一方比另一方更好?

tensorflow recurrent-neural-network

6
推荐指数
1
解决办法
3166
查看次数

减小Keras LSTM型号的尺寸

基本上,我正在使用Keras训练LSTM模型,但是当我保存它时,它的大小需要100MB.但是,我的模型的目的是部署到Web服务器以作为API,我的Web服务器无法运行它,因为模型大小太大.在分析了我的模型中的所有参数之后,我发现我的模型有20,000,000参数但15,000,000参数未经训练,因为它们是字嵌入.有没有办法可以通过删除15,000,000参数来最小化模型的大小,但仍保留模型的性能?这是我的模型代码:

def LSTModel(input_shape, word_to_vec_map, word_to_index):


    sentence_indices = Input(input_shape, dtype="int32")

    embedding_layer = pretrained_embedding_layer(word_to_vec_map, word_to_index)


    embeddings = embedding_layer(sentence_indices)


    X = LSTM(256, return_sequences=True)(embeddings)
    X = Dropout(0.5)(X)
    X = LSTM(256, return_sequences=False)(X)
    X = Dropout(0.5)(X)    
    X = Dense(NUM_OF_LABELS)(X)
    X = Activation("softmax")(X)

    model = Model(inputs=sentence_indices, outputs=X)

    return model
Run Code Online (Sandbox Code Playgroud)

python machine-learning lstm keras recurrent-neural-network

6
推荐指数
1
解决办法
808
查看次数

Keras功能API:将CNN模型与RNN结合起来以查看图像序列

因此,我对如何在Keras中将CNN与RNN结合存在一个疑问。在发布问题时,有人指出我这是解决问题的正确方法。显然,我只是忽略了原始代码中的某些内容,这使我回答了自己的问题。

原始问题如下:

如何在Keras中创建一个模型,该模型以图像序列作为输入,并在每个单独的图像上“看” CNN,并将CNN输出的序列馈入RNN?

为了更清楚一点:

模型一:观看单个图像的CNN。
模型二:RNN,位于模型一CNN输出的序列上。

因此,例如,CNN应该看到5张图像,并且这5个CNN输出的序列应该传递给RNN。

输入数据的格式如下
:(图像数,宽度,高度,通道)=(4000、120、60、1)

time-series conv-neural-network keras recurrent-neural-network

6
推荐指数
1
解决办法
2417
查看次数