标签: recurrent-neural-network

导入 tf.nn.rnn_cell 中的 Tensorflow 错误

我正在使用 Tensorflow 1.0.0 和 Python 3.5。当我尝试做:

cell = tf.nn.rnn_cell.BasicRNNCell(state_size)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

属性错误

  <ipython-input-25-41a20d8458a7> in <module>()

      1 # Forward pass
      2 print(tf.__version__)
  --->3 cell = tf.nn.rnn_cell.BasicRNNCell(state_size)
      4 states_series, current_state = tf.nn.dynamic_rnn(cell, inputs_series, initial_state = init_state)
  AttributeError: module 'tensorflow.python.ops.nn' has no attribute 'rnn_cell'
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

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

2
推荐指数
2
解决办法
8765
查看次数

如何在 tensorflow C/C++ 中输入和检索 LSTM 的状态

我想在python中构建和训练一个多层LSTM模型(stateIsTuple=True),然后在C++中加载和使用它。但是我很难弄清楚如何在 C++ 中提供和获取状态,主要是因为我没有可以引用的字符串名称。

例如,我将初始状态放在一个命名范围内,例如

    with tf.name_scope('rnn_input_state'):
        self.initial_state = cell.zero_state(args.batch_size, tf.float32)
Run Code Online (Sandbox Code Playgroud)

这出现在下图中,但是我如何在 C++ 中输入这些内容?

在此处输入图片说明

另外,如何在 C++ 中获取当前状态?我在 python 中尝试了下面的图形构造代码,但我不确定这是否正确,因为 last_state 应该是张量元组,而不是单个张量(尽管我可以看到张量板中的 last_state 节点是 2x2x50x128,这听起来像是连接了状态,因为我有 2 层,128 rnn 大小,50 迷你批量大小和 lstm 单元 - 具有 2 个状态向量)。

    with tf.name_scope('outputs'):
        outputs, last_state = legacy_seq2seq.rnn_decoder(inputs, self.initial_state, cell, loop_function=loop if infer else None)
        output = tf.reshape(tf.concat(outputs, 1), [-1, args.rnn_size], name='output')
Run Code Online (Sandbox Code Playgroud)

这就是张量板中的样子

在此处输入图片说明

我是否应该连接和拆分状态张量,以便只有一个状态张量进出?或者,还有更好的方法?

PS 理想情况下,该解决方案不会涉及对层数(或 rnn 大小)进行硬编码。所以我可以只有四个字符串 input_node_name、output_node_name、input_state_name、output_state_name,其余的都是从那里派生的。

c++ lstm tensorflow recurrent-neural-network

2
推荐指数
1
解决办法
2211
查看次数

tensorflow - 如何正确使用变分循环辍学

tensorflow配置dropout包装器具有三种不同的 dropout概率可以设置:input_keep_prob, output_keep_prob, state_keep_prob.

我想通过将variational_recurrent参数设置为 true 来为我的 LSTM 单元使用变分 dropout 。但是,我不知道必须使用三个 dropout 概率中的哪一个才能使变分 dropout 正常运行。

有人可以提供帮助吗?

lstm tensorflow recurrent-neural-network

2
推荐指数
1
解决办法
2525
查看次数

如何在 Keras Python 中将 TF IDF 矢量器与 LSTM 结合使用

我正在尝试使用 Python Keras 库中的 LSTM 训练 Seq2Seq 模型。我想使用句子的 TF IDF 向量表示作为模型的输入并收到错误。

X = ["Good morning", "Sweet Dreams", "Stay Awake"]
Y = ["Good morning", "Sweet Dreams", "Stay Awake"]

vectorizer = TfidfVectorizer()
vectorizer.fit(X)
vectorizer.transform(X)
vectorizer.transform(Y)
tfidf_vector_X = vectorizer.transform(X).toarray() #shape - (3,6)
tfidf_vector_Y = vectorizer.transform(Y).toarray() #shape - (3,6)
tfidf_vector_X = tfidf_vector_X[:, :, None] #shape - (3,6,1) since LSTM cells expects ndims = 3
tfidf_vector_Y = tfidf_vector_Y[:, :, None] #shape - (3,6,1)

X_train, X_test, y_train, y_test = train_test_split(tfidf_vector_X, tfidf_vector_Y, test_size = 0.2, random_state = …
Run Code Online (Sandbox Code Playgroud)

python nlp lstm keras recurrent-neural-network

2
推荐指数
1
解决办法
1万
查看次数

堆叠 LSTM 网络中每个 LSTM 层的输入是什么?

我在理解堆叠 LSTM 网络中层的输入-输出流时遇到了一些困难。假设我创建了一个堆叠的 LSTM 网络,如下所示:

# parameters
time_steps = 10
features = 2
input_shape = [time_steps, features]
batch_size = 32

# model
model = Sequential()
model.add(LSTM(64, input_shape=input_shape,  return_sequences=True))
model.add(LSTM(32,input_shape=input_shape))
Run Code Online (Sandbox Code Playgroud)

我们的堆叠 LSTM 网络由 2 个 LSTM 层组成,分别具有 64 个和 32 个隐藏单元。在这种情况下,我们希望在每个时间步长中,第 1 个 LSTM 层 -LSTM(64)- 将作为输入传递给第 2 个 LSTM 层 -LSTM(32)- 一个大小为 的向量[batch_size, time-step, hidden_unit_length],它表示隐藏状态当前时间步长的第 1 个 LSTM 层。让我困惑的是:

  1. 第二个 LSTM 层 -LSTM(32)- 是否接收X(t)(作为输入)第一层的隐藏状态 -LSTM(64)- 具有大小[batch_size, time-step, hidden_unit_length]并通过它自己的隐藏网络 - 在这种情况下由 32 个节点组成-?
  2. 如果第一个是真的,为什么input_shape …

stacked deep-learning lstm recurrent-neural-network

2
推荐指数
1
解决办法
2787
查看次数

了解嵌入向量维度

在深度学习中,特别是 NLP 中,单词被转换为向量表示,然后输入到 RNN 等神经网络中。通过参考链接:

\n\n

http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/#Word%20Embeddings

\n\n

在Word Embeddings部分,据说:

\n\n
\n

词嵌入 W:words\xe2\x86\x92Rn 是一个参数化函数,将某种语言中的单词\n映射到高维向量(可能是 200 到 500 维)

\n
\n\n

我不明白向量维度的目的。与20 维向量相比, 200 维向量意味着什么?

\n\n

它是否提高了模型的整体精度?谁能给我一个关于向量维数选择的简单例子。

\n

nlp machine-learning neural-network deep-learning recurrent-neural-network

2
推荐指数
1
解决办法
2081
查看次数

知道在 Keras 中需要多少个 LSTM 单元以及每个 LSTM 单元中有多少个单元的规则是什么?

我知道 LSTM 单元内部有许多 ANN。

但是在为同一问题定义隐藏层时,我看到有些人只使用 1 个 LSTM 单元,而其他人则使用 2、3 个 LSTM 单元,如下所示 -

model = Sequential()
model.add(LSTM(256, input_shape=(n_prev, 1), return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(128, input_shape=(n_prev, 1), return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(64, input_shape=(n_prev, 1), return_sequences=False))
model.add(Dropout(0.3))
model.add(Dense(1))
model.add(Activation('linear'))
Run Code Online (Sandbox Code Playgroud)
  1. 关于您应该使用多少个 LSTM 单元,是否有任何规则?或者它只是手动实验?
  2. 紧随其后的另一个问题是,您应该在 LSTM 单元中使用多少个单元。对于同样的问题,有些人需要 256,有些人需要 64。

python lstm keras tensorflow recurrent-neural-network

2
推荐指数
1
解决办法
4216
查看次数

即使在使用正则化器后,LSTM 中的过度拟合

我有一个时间序列预测问题,正在构建一个如下所示的 LSTM:

def create_model():
    model = Sequential()
    model.add(LSTM(50,kernel_regularizer=l2(0.01), recurrent_regularizer=l2(0.01), bias_regularizer=l2(0.01), input_shape=(train_X.shape[1], train_X.shape[2])))
    model.add(Dropout(0.591))
    model.add(Dense(1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model
Run Code Online (Sandbox Code Playgroud)

当我在 5 个分割上训练模型时,如下所示:

tss = TimeSeriesSplit(n_splits = 5)
X = data.drop(labels=['target_prediction'], axis=1)
y = data['target_prediction'] 
for train_index, test_index in tss.split(X):
   train_X, test_X = X.iloc[train_index, :].values, X.iloc[test_index,:].values
   train_y, test_y = y.iloc[train_index].values, y.iloc[test_index].values
   model=create_model()
   history = model.fit(train_X, train_y, epochs=10, batch_size=64,validation_data=(test_X, test_y), verbose=0, shuffle=False)
Run Code Online (Sandbox Code Playgroud)

我遇到过拟合问题。附上损失图在此处输入图片说明

我不确定为什么在我的 Keras 模型中使用正则化器时会出现过度拟合。任何帮助表示赞赏。

编辑: 尝试架构

def create_model():
    model = Sequential()
    model.add(LSTM(20, input_shape=(train_X.shape[1], train_X.shape[2])))
    model.add(Dense(1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model


def create_model(x,y): …
Run Code Online (Sandbox Code Playgroud)

python deep-learning lstm keras recurrent-neural-network

2
推荐指数
1
解决办法
1996
查看次数

Using Softmax Activation function after calculating loss from BCEWithLogitLoss (Binary Cross Entropy + Sigmoid activation)

I am going through a Binary Classification tutorial using PyTorch and here, the last layer of the network is torch.Linear() with just one neuron. (Makes Sense) which will give us a single neuron. as pred=network(input_batch)

After that the choice of Loss function is loss_fn=BCEWithLogitsLoss() (which is numerically stable than using the softmax first and then calculating loss) which will apply Softmax function to the output of last layer to give us a probability. so after that, it'll calculate the binary …

neural-network deep-learning recurrent-neural-network pytorch

2
推荐指数
1
解决办法
5383
查看次数

RNN(递归神经网络)可以作为正常的神经网络进行训练吗?

训练RNN和简单神经网络有什么区别?RNN能否使用前馈和后退方法进行训练?

谢谢!

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

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