在阅读了这个问题的答案后,我对整个 PackedSequence 对象的事情仍然有点困惑。据我了解,这是一个针对循环模型中可变大小序列的并行处理而优化的对象,零填充是一个[不完美]解决方案。看起来,给定一个 PackedSequence 对象,Pytorch RNN 将处理批次中的每个序列直至结束,并且不会继续处理填充。那么为什么这里需要填充呢?为什么同时存在 pack_padded_sequence() 和 pack_sequence() 方法?
我有一个具有以下形状的输入数据:(5395, 69, 1)
我的 input_shape 应该是:
(69,1)或者
(1,69)?
LSTM 层中有 69 个神经元,我在第一个 input_shape 中获得 19'596 个参数进行训练,而在第二个 38'364 个参数中,这些不是分别作为输入 1 和 69 个值获取的结果吗?我的问题是我应该输入 1 因为我有 1 个特征,还是应该输入 69 因为我有 69 个时间步长,为什么?
我是一个尝试 LSTM 的新手。
我基本上使用 LSTM 来确定动作类型(5 种不同的动作),例如跑步、跳舞等。我的输入是每个动作 60 帧,大致可以说大约 120 个这样的视频
train_x.shape = (120,192,192,60)
其中 120 是用于训练的样本视频数量,192X192 是帧大小,60 是帧数。
train_y.shape = (120*5) [1 0 0 0 0 ..... 0 0 0 0 1] 一个热编码
我不清楚如何将 3d 参数传递给 lstm (时间戳和功能)
model.add(LSTM(100, input_shape=(train_x.shape[1],train_x.shape[2])))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dense(len(uniquesegments), activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(train_x, train_y, epochs=100, batch_size=batch_size, verbose=1)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
层顺序的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到的完整形状:(无、192、192、60)
训练数据算法
Loop through videos
Loop through each frame of a video
logic
append to array
convert to numpy array
roll …Run Code Online (Sandbox Code Playgroud) 我收到有关 lstm 层输出形状的奇怪错误。我尝试了几件事,但不确定我在哪里做错了。
这个问题来自courser的深度学习专业
''' def music_inference_model(LSTM_cell, densor, Ty=100):
n_values = densor.units
n_a = LSTM_cell.units
x0 = Input(shape=(1, n_values))
a0 = Input(shape=(n_a,), name='a0')
c0 = Input(shape=(n_a,), name='c0')
a = a0
c = c0
x = x0
outputs = []
for t in range(Ty):
a, _, c = LSTM_cell(x, initial_state=[a, c])
out = densor(a)
outputs.append(out)
x = tf.math.argmax(out)
x = tf.one_hot(x, depth=n_values)
x = RepeatVector(1)(x)
inference_model = Model([x0,a0,c0],outputs)
return inference_model
inference_model = music_inference_model(LSTM_cell, densor, Ty = 50)
inference_summary = summary(inference_model)
comparator(inference_summary, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 python 中导入 LSTM
from keras.layers.recurrent import LSTM
Run Code Online (Sandbox Code Playgroud)
但是,我在编译时收到以下错误消息:
ModuleNotFoundError:没有名为“keras.layers.recurrent”的模块
有人可以帮我解决这个问题吗?
neural-network python-3.x lstm keras recurrent-neural-network
我正在尝试使用RNN进行特定领域的分类研究,并累积了数千万条文本.由于运行整个数据集需要数天甚至数月,因此我只选择了一小部分用于测试,比如1M文本(80%用于培训,20%用于验证).我用文字矢量化预训练整个语料库,我还将Dropout应用于模型以避免过度拟合.当它在12小时内训练60000文本时,损失已经下降到相当低的水平,准确率为97%.我应该继续吗?它有助于继续培训吗?
它仍在运行第一个时代,我担心如果我现在停下来,模型将不会涵盖整个...
nlp machine-learning neural-network lstm recurrent-neural-network
当神经网络缩小或增大(通过节点数,连接数等)时,是否存在已知的连续训练方法和神经网络的优雅降级?
在我的记忆中,我所读到的关于神经网络的一切都是从静态的角度出发的.你定义网,然后训练它.
如果有一些神经网络X有N个节点(神经元,无论如何),是否有可能训练网络(X),以便在N增加或减少时,网络仍然有用并且能够执行?
标题说明了一切:神经网络能否具有完美的列车精度?我的准确度达到了约0.9,我想知道这是否表明我的网络或训练数据存在问题.
训练实例:约4500个序列,平均长度为10个元素.网络:双向香草RNN,顶部有softmax层.
我可以创建一个具有两层LSTM的RNN网络,如下所示:
lstm_cell1 = tf.nn.rnn_cell.BasicLSTMCell(50)
lstm_cell2 = tf.nn.rnn_cell.BasicLSTMCell(100)
lstm_net = tf.nn.rnn_cell.MultiRNNCell([lstm_cell1, lstm_cell2])
Run Code Online (Sandbox Code Playgroud)
但是现在我还希望在每个lstm单元格之后包含dropout图层.就像是,
tf.nn.rnn_cell.MultiRNNCell([tf.nn.dropout(lstm_cell1, 0.8), tf.nn.dropout(lstm_cell2, 0.8)])
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
我的问题是关于TensorFlow方法tf.nn.dynamic_rnn.它返回每个时间步和最终状态的输出.
我想知道返回的最终状态是否是最大序列长度的单元格状态,或者是否由sequence_length参数单独确定.
为了更好地理解一个例子:我有3个具有长度的序列[10,20,30]并且返回最终状态[3,512](如果单元的隐藏状态具有512的长度).
三个序列的三个返回隐藏状态是时间步骤30中的单元状态还是我在时间步骤返回状态[10,20,30]?
python machine-learning neural-network tensorflow recurrent-neural-network