小编H.R*_*ort的帖子

当我们有 pack_sequence() 时,为什么还需要 pack_padded_sequence() ?

在阅读了这个问题的答案后,我对整个 PackedSequence 对象的事情仍然有点困惑。据我了解,这是一个针对循环模型中可变大小序列的并行处理而优化的对象,零填充是一个[不完美]解决方案。看起来,给定一个 PackedSequence 对象,Pytorch RNN 将处理批次中的每个序列直至结束,并且不会继续处理填充。那么为什么这里需要填充呢?为什么同时存在 pack_padded_sequence() 和 pack_sequence() 方法?

recurrent-neural-network pytorch

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

Keras 2D 输入到 2D 输出

首先,我已经阅读了这个这个与我名字相似的问题,但仍然没有答案。

我想建立一个用于序列预测的前馈网络。(我意识到 RNN 更适合这项任务,但我有我的理由)。序列的长度为 128,每个元素是一个有 2 个条目的向量,因此每个批次都应具有形状(batch_size, 128, 2),目标是序列中的下一步,因此目标张量应具有形状(batch_size, 1, 2)

网络架构是这样的:

    model = Sequential()
    model.add(Dense(50, batch_input_shape=(None, 128, 2), kernel_initializer="he_normal" ,activation="relu"))
    model.add(Dense(20, kernel_initializer="he_normal", activation="relu"))
    model.add(Dense(5, kernel_initializer="he_normal", activation="relu"))
    model.add(Dense(2))
Run Code Online (Sandbox Code Playgroud)

但是尝试训练时出现以下错误:

ValueError: Error when checking target: expected dense_4 to have shape (128, 2) but got array with shape (1, 2)
Run Code Online (Sandbox Code Playgroud)

我尝试过以下变体:

model.add(Dense(50, input_shape=(128, 2), kernel_initializer="he_normal" ,activation="relu"))
Run Code Online (Sandbox Code Playgroud)

但得到同样的错误。

python machine-learning time-series forecasting keras

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

log的向量化计算(n!)

我有一个(任意形状的)X整数数组,并且我想计算每个条目的阶乘的对数(精确地,不是通过Gamma函数)。数字足够大

np.log(scipy.special.factorial(X))
Run Code Online (Sandbox Code Playgroud)

是不可行的。所以我想做类似的事情np.sum(np.log(np.arange(2,X+1)), axis=-1)

但是arange()函数为每个条目赋予不同的大小,因此这是行不通的。我虽然想用填充,但是我不确定该怎么做。

能以向量化的方式完成吗?

python numpy vectorization multidimensional-array

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