【问题标题】:Keras Signal Processing ModelKeras 信号处理模型
【发布时间】:2018-12-12 20:39:51
【问题描述】:

嘿嘿,我有一些信号处理的模型问题。

上下文:我有一些信号作为浮点数存储在 numpy 数组中,它们都是不同的长度,我需要及时提取特定点的信号偏移量,问题是我不知道那个点在哪里在数组中,所以我无法调整数组的大小(以便所有信号都具有相同的长度)。

我有大约 8000 个已知偏移量的信号。所以我想在他们身上训练模型。

我现在拥有的东西

model = Sequential()
model.add(LSTM(256, input_shape=(None,1)))
model.add(Dropout(0.2))
model.add(Dense(1, activation="tanh"))
adam = Adam(lr=0.001)
model.compile(loss='mse', optimizer=adam,metrics=['mse', 'acc'])
  • input_shape=(None,1) 因为我不知道数组的长度
  • activation="tanh" 最后一层必须也可以返回负数。

基本上我的模型不应该依赖于长度,应该输出负值和正值。这个模型不能满足我的需要,我想知道是否有人可以为我指出一个更好的方向。

“不起作用”,如在 1000 个 epochs 的约 200 个信号/批次,100 个 step/epoch 的训练后,输出是“随机的”,与实际值相差甚远。

我正在考虑使用 ConvNet 代替 LSTM。但我不能使用“Flatten”或“Reshape”。

一个带有 numpy savetxt 的信号

-1.118700742721557617e+00
-9.661099910736083984e-01
-9.661099910736083984e-01
-1.088183045387268066e+00
-1.149218797683715820e+00
-1.118700742721557617e+00
-1.088183045387268066e+00
-1.118700742721557617e+00
-1.149218797683715820e+00
-1.088183045387268066e+00
-1.088183045387268066e+00
-1.118700742721557617e+00
-1.179736852645874023e+00
-1.149218797683715820e+00
-1.118700742721557617e+00
-1.149218797683715820e+00
-1.240772962570190430e+00
-1.301809072494506836e+00
-1.240772962570190430e+00
-1.179736852645874023e+00
-1.149218797683715820e+00
-1.240772962570190430e+00
-1.332327008247375488e+00
-1.393362998962402344e+00
-1.362845063209533691e+00
-1.271291017532348633e+00
-1.240772962570190430e+00
-1.362845063209533691e+00
-1.423881053924560547e+00
-1.301809072494506836e+00
-1.088183045387268066e+00
-1.027147054672241211e+00
-1.118700742721557617e+00
-1.240772962570190430e+00
-1.332327008247375488e+00
-1.393362998962402344e+00
-1.332327008247375488e+00
-1.301809072494506836e+00
-1.271291017532348633e+00
-1.210254907608032227e+00
-1.057664990425109863e+00
-9.966289997100830078e-01
-9.966289997100830078e-01
-8.440380096435546875e-01
-5.083401203155517578e-01
-3.252310752868652344e-01
-4.778220653533935547e-01
-7.219660282135009766e-01
-7.219660282135009766e-01
-6.609300374984741211e-01

【问题讨论】:

  • 我不明白你的信号形式。模型不工作怎么办?你能给出一些示例数据和错误吗?
  • “不起作用”,如在 1000 个 epoch 训练后,约 200 个信号/批次,100 个 step/epoch,输出是“随机的”,与实际值相差甚远。
  • 您想要检测的事物的签名有多长(以样本数计)?您应该定义一个感受野稍宽的模型,然后在感受野大小的帧上进行训练。训练数据必须分成这样的卡盘,并单独标记(可以从您的输入数据中自动完成)

标签: python keras regression signal-processing


【解决方案1】:

我不确定“为什么”您认为该模型“不起作用”。如果是因为指标,好吧,也许你可以增加层数,让它更强大/更复杂。

但如果是其他原因,请在问题中说明。

您可以使用GlobalMaxPooling2D 或GlobalAveragePooling2D 而不是Flatten 或Reshape 来构建卷积模型。

您可以在任何模型(包括 LSTM 模型)中做的一件非常有趣的事情是为当前位置添加数据。

例如,如果您的信号长度为 3:[s0, s1, s2],您可以添加每个步骤的当前位置,传递形状为 (None,2) 的输入数据,例如:[[s0,0],[s1,1],[s2,2]]

这样,您将帮助您的模型明确地具有绝对和相对位置,而无需依赖非常长的处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多