我有一个递归网络(RNN),它的任务是学习分类向量(Float32)。到目前为止,我的模型非常简单:
model = Sequential([
SimpleRNN(units=10, input_shape=(None, len_vector)),
Dense(1, activation="relu")
])
model.compile(loss='mse', optimizer='Adam', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=30)
为了训练这个网络,我创建了一个包含1000个向量序列示例的数据集。当我创建每个长度相同的序列时,训练效果很好,数据集具有形状:
[<number of sequences>, <number of vectors in each sequence>, <number of floats in each vector>]
问题是,我的模型必须能够在各种长度的序列上工作。我不知道如何(或者是否可能)创建一个一维不恒定的数值数组。
在寻找解决方案时,我发现设置数组dtype=object
可以将不同形状的列表分配给Numy数组的元素,但keras模型只接受dtype="float32"
。
有没有办法让这个数组数据集变得稀疏呢?或者我应该改变算法来训练模型?或者,用NUL载体填充序列以统一其长度是唯一的解决方案?
)谢谢你的帮助。我对深度学习还是个新手,所以如果我的要求很明显的话,我很抱歉。)
1条答案
按热度按时间3htmauhk1#
使用参差不齐的Tensor,它们为你提供可变长度的输入,