标签: rnn

用于 RNN 的 Keras get_weight 解释

当我使用 Keras 运行此代码时:

networkDrive = Input(batch_shape=(1,length,1))
network = SimpleRNN(3, activation='tanh', stateful=False, return_sequences=True)(networkDrive)

generatorNetwork = Model(networkDrive, network)

predictions = generatorNetwork.predict(noInput, batch_size=length)


print(np.array(generatorNetwork.layers[1].get_weights()))
Run Code Online (Sandbox Code Playgroud)

我得到这个输出

[array([[ 0.91814435,  0.2490257 ,  1.09242284]], dtype=float32)
 array([[-0.42028981,  0.68996912, -0.58932084],
       [-0.88647962, -0.17359462,  0.42897415],
       [ 0.19367599,  0.70271438,  0.68460363]], dtype=float32)
 array([ 0.,  0.,  0.], dtype=float32)]
Run Code Online (Sandbox Code Playgroud)

我想,(3,3) 矩阵是权重矩阵,将 RNN 单元相互连接起来,两个数组之一可能是偏差但第三个是什么?

neural-network keras recurrent-neural-network rnn

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

.fit()层的shuffle ='batch'参数如何在后台运行?

当我使用.fit()图层训练模型时,参数shuffle预设为True.

假设我的数据集有100个样本,批量大小为10.当我设置shuffle = True然后keras首先随机随机选择样本(现在100个样本有不同的顺序),并且在新订单上它将开始创建批次:批处理1:1-10,批次2:11-20等

如果我设置shuffle = 'batch'它应该如何在后台工作?直观地使用前面的100个样本数据集的例子,批量大小= 10,我的猜测是keras首先将样本分配给批次(即批次1:数据集原始订单后的样本1-10,批次2:11-20以下数据集原始顺序,批次3 ......等等)然后洗牌批次的顺序.因此,模型现在将按随机订购的批次进行培训,例如:3(包含样品21 - 30),4(包含样品31 - 40),7(包含样品61 - 70),1(包含样品1 - 10) ),...(我编制了批次的顺序).

我的想法是正确还是我错过了什么?

谢谢!

shuffle lstm keras rnn

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

keras中的二进制交叉熵和带对数的二进制交叉熵有什么区别?

在keras后端,我们还有一个标志with_logitsK.binary_crossentropy。正常的二进制互熵和带对数的二进制互熵有什么区别?假设我正在使用seq2seq模型,并且我的输出序列是type 100111100011101

如果我在输入中给出了类似的顺序以及时间步长,那么递归的LSTM或RNN应该从该数据中学到什么呢?

python machine-learning lstm keras rnn

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

pytorch RNN强迫老师

pytorch教程通过定义输入层和隐藏层,并手动将隐藏层送回到网络中以记住状态,很好地说明了基本的RNN。然后,这种灵活性使您可以非常轻松地执行教师强制。

问题1:在使用本机nn.RNN()模块时,您如何执行教师强迫(因为整个序列是一次输入的)?简单的RNN网络示例如下:

class SimpleRNN(nn.Module):

    def __init__(self, vocab_size,
                 embedding_dim,
                 batch_sz,
                 hidden_size=128,
                 nlayers=1,
                 num_directions=1,
                 dropout=0.1):

        super(SimpleRNN, self).__init__()

        self.batch_sz = batch_sz
        self.hidden_size = hidden_size

        self.encoder = nn.Embedding(vocab_size, embedding_dim)
        self.rnn = nn.RNN(embedding_dim, hidden_size, nlayers, dropout=0.5)
        self.decoder = nn.Linear(hidden_size, vocab_size)

    def init_hidden(self):
        return autograd.Variable(torch.zeros(nlayers, batch_sz, hidden_size)).cuda()

    def forward(self, inputs, hidden):

        # -- encoder returns:
        # -- [batch_sz, seq_len, embed_dim]
        encoded = self.encoder(inputs) 
        _, seq_len, _ = encoded.size()

        # -- rnn returns:
        # -- output.size() = [seq_len, batch_sz, hidden_sz]
        # -- hidden.size() = …
Run Code Online (Sandbox Code Playgroud)

pytorch rnn

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

如何在Keras功能模型中添加Dropout?

假设我在Keras有一个LSTM层,如下所示:

x = Input(shape=(input_shape), dtype='int32')

x = LSTM(128,return_sequences=True)(x)
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用以下方法将Dropout添加到此图层:

X = Dropout(0.5)
Run Code Online (Sandbox Code Playgroud)

但是这给出了错误,我假设上面的行正在重新定义X而不是向它添加Dropout.如何解决这个问题?

python machine-learning neural-network keras rnn

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

递归神经网络的图像分类

我正在尝试使用带有自定义数据的RNN寻找带有标签的图像分类。除了Mnist数据集,我找不到其他示例。像这样的使用CNN进行分类的存储库的任何帮助将不胜感激。关于使用RNN进行图像分类的任何帮助都将有所帮助。尝试替换以下教程的CNN网络。

python conv-neural-network keras tensorflow rnn

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

使用Tensorflow与RNN和批处理规范化

我一直在Tensorflow中跟踪SEGFAULT。可以使用以下代码段重现该问题:

import tensorflow as tf                                                                                                                                                                                                                       

with tf.device('/cpu:0'):
    xin = tf.placeholder(tf.float32, [None, 1, 1], name='input')
    rnn_cell = tf.contrib.rnn.LSTMCell(1)
    out, _ = tf.nn.dynamic_rnn(rnn_cell, xin, dtype=tf.float32)
    out = tf.layers.batch_normalization(out, training=True)
    out = tf.identity(out, name='output')

    optimiser = tf.train.AdamOptimizer(.0001)
    update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
    with tf.control_dependencies(update_ops):
        out = optimiser.minimize(out, global_step=tf.Variable(0, dtype=tf.float32), name='train_op')

config = tf.ConfigProto(allow_soft_placement = False)
sess = tf.Session(config=config)
sess.run(tf.global_variables_initializer())

sample_in = [[[0]]]
sess.run(out, feed_dict={xin: sample_in})
Run Code Online (Sandbox Code Playgroud)

我设法找到了这个问题,并在github上有一个pull-request请求。如果使用我的补丁程序运行此代码,则会收到以下错误消息:

2018-04-03 13:09:24.326950: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1212] Found device 0 with properties:                                                                                                                          
name: TITAN Xp major: 6 minor: …
Run Code Online (Sandbox Code Playgroud)

python tensorflow batch-normalization tensorflow-xla rnn

5
推荐指数
0
解决办法
638
查看次数

Rnn神经网络预测返回意外预测

我正在试图配置RNN神经网络,以预测5种不同类型的文本实体.我正在使用下一个配置:

    MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
            .seed(seed)
            .iterations(100)
            .updater(Updater.ADAM)  //To configure: .updater(Adam.builder().beta1(0.9).beta2(0.999).build())
            .regularization(true).l2(1e-5)
            .weightInit(WeightInit.XAVIER)
            .gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue).gradientNormalizationThreshold(1.0)
            .learningRate(2e-2)
            .trainingWorkspaceMode(WorkspaceMode.SEPARATE).inferenceWorkspaceMode(WorkspaceMode.SEPARATE)   //https://deeplearning4j.org/workspaces
            .list()
            .layer(0, new GravesLSTM.Builder().nIn(500).nOut(3)
                    .activation(Activation.TANH).build())
            .layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT).activation(Activation.SOFTMAX)        //MCXENT + softmax for classification
                    .nIn(3).nOut(5).build())
            .pretrain(false).backprop(true).build();
  MultiLayerNetwork net = new MultiLayerNetwork(conf);
  net.init();
Run Code Online (Sandbox Code Playgroud)

我训练它然后我评估它.有用.不过我用的时候:

 int[] prediction = net.predict(features);
Run Code Online (Sandbox Code Playgroud)

有时它会回归并出现意想不到的预测.它返回正确的预测为1,2 .... 5但有时它返回数字为9,14,12 ...这个数字不对应于已识别的预测/标签.

为什么此配置会返回意外输出?

java deep-learning deeplearning4j rnn

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

使用Tensorflow中的GRU将先前时间步长的渐变到当前时间步长

我在tensorflow中有以下模型:

def output_layer(input_layer, num_labels):
    '''
    :param input_layer: 2D tensor
    :param num_labels: int. How many output labels in total? (10 for cifar10 and 100 for cifar100)
    :return: output layer Y = WX + B
    '''
    input_dim = input_layer.get_shape().as_list()[-1]
    fc_w = create_variables(name='fc_weights', shape=[input_dim, num_labels],
                            initializer=tf.uniform_unit_scaling_initializer(factor=1.0))
    fc_b = create_variables(name='fc_bias', shape=[num_labels], initializer=tf.zeros_initializer())

    fc_h = tf.matmul(input_layer, fc_w) + fc_b
    return fc_h

def model(input_features):

    with tf.variable_scope("GRU"):
        cell1 = tf.nn.rnn_cell.GRUCell(gru1_cell_size)

        cell2 = tf.nn.rnn_cell.GRUCell(gru2_cell_size)

        mcell = tf.nn.rnn_cell.MultiRNNCell([cell1, cell2], state_is_tuple=False)

        # shape=(?, 64 + 32) 
        initial_state = tf.placeholder(shape=[None, gru1_cell_size …
Run Code Online (Sandbox Code Playgroud)

gradient tensorflow rnn

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

Tensorflow.js LSTM时间序列预测

我正在尝试使用LSTM RNN在Tensorflow.js中构建一个简单的时间序列预测脚本。我显然是ML的新手。我一直在尝试从Keras RNN / LSTM层api改编我的JS代码,这显然是同一回事。从我收集的图层来看,形状等都是正确的。对我在这里做错的任何想法吗?

async function predictfuture(){

    ////////////////////////
    // create fake data
    ///////////////////////

    var xs = tf.tensor3d([
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]]
    ]);
    xs.print();

    var ys = tf.tensor3d([
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]],
        [[1],[1],[0]]
    ]);
    ys.print();


    ////////////////////////
    // create model w/ layers api
    ///////////////////////

    console.log('Creating Model...');

    /*

    model design:

                    i(xs)   h       o(ys)
    batch_size  ->  *       *       * -> batch_size
    timesteps   ->  *       *       * -> timesteps
    input_dim   ->  *       *       * -> input_dim


    */

    const model = tf.sequential(); …
Run Code Online (Sandbox Code Playgroud)

javascript lstm tensorflow rnn tensorflow.js

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