我正在使用这种架构(一个用于不同轨迹长度的掩蔽层,填充0到最大长度轨迹,然后是一个LSTM,之后是一个密集层,输出2个值)来构建一个回归器,根据轨迹预测2个值.

samples, timesteps, features = x_train.shape[0], x_train.shape[1], x_train.shape[2]

model = Sequential()
model.add(tf.keras.layers.Masking(mask_value=0., input_shape=(timesteps, features), name="mask"))
model.add(LSTM(30, return_sequences=True, name="lstm1"))
model.add(LSTM(30, return_sequences=False, name="lstm2"))
model.add(Dense(20, activation='relu', name="dense1"))
model.add(Dense(20, activation='relu', name="dense2"))
model.add(Dense(2, activation='linear', name="output"))
model.compile(optimizer="adam", loss="mse")

培训内容包括:

model.fit(x_train, y_train, epochs = 10, batch_size = 32)

我的输入数据形状如下:

x_train (269, 527, 11) (269 trajectories of 527 timesteps of 11 features)
y_train (269, 2) (these 269 trajectories have 2 target values)
x_test (30, 527, 11) (--- same ---)
y_test (30, 2) (--- same ---)

我已经对我的数据进行了预处理,所以我的所有序列都有固定的长度,较小的序列在缺失的时间步中填充0.

正如预期的那样,输出的形状如下:

(30, 2)

但研究它似乎是在回归同样的价值观.

[[37.48257     0.7025466 ]
 [37.48258     0.70254654]
 [37.48257     0.70254654]
 [37.48257     0.7025466 ]
 [37.48258     0.70254654]
 [37.48258     0.70254654]
 [37.48258     0.70254654]
 [37.48258     0.7025465 ]
 [42.243515    0.6581909 ]
 [37.48258     0.70254654]
 [37.48257     0.70254654]
 [37.48258     0.70254654]
 [37.48261     0.7025462 ]
 [37.48257     0.7025466 ]
 [37.482582    0.70254654]
 [37.482567    0.70254654]
 [37.48257     0.7025466 ]
 [37.48258     0.70254654]
 [37.48258     0.70254654]
 [37.48257     0.7025466 ]
 [37.48258     0.70254654]
 [37.48258     0.70254654]
 [37.48258     0.70254654]
 [37.482567    0.7025465 ]
 [37.48261     0.7025462 ]
 [37.482574    0.7025466 ]
 [37.48261     0.7025462 ]
 [37.48261     0.70254624]
 [37.48258     0.70254654]
 [37.48261     0.7025462 ]]

而我的目标值(y_测试)是:

[[70.   0.6]
 [40.   0.6]
 [ 6.   0.6]
 [94.   0.7]
 [50.   0.6]
 [60.   0.6]
 [16.   0.6]
 [76.   0.9]
 [92.   0.6]
 [32.   0.8]
 [22.   0.7]
 [70.   0.7]
 [36.   1. ]
 [64.   0.7]
 [ 0.   0.9]
 [82.   0.9]
 [38.   0.6]
 [54.   0.8]
 [28.   0.8]
 [62.   0.7]
 [12.   0.6]
 [72.   0.8]
 [66.   0.8]
 [ 2.   1. ]
 [98.   1. ]
 [20.   0.8]
 [82.   1. ]
 [38.   1. ]
 [68.   0.6]
 [62.   1. ]]

这就像将整个数据集作为一个数据点.

感谢任何帮助!

推荐答案

当权重是随机的时,它们会导致具体的输入计算混乱,我们总是得到几乎相同的输出.

[-2.39 -2.54 -2.23 -2.24 -2.29 -2.37 -2.39 -2.10 -2.34 -2.20]
[-2.28 -2.43 -2.25 -2.33 -2.28 -2.42 -2.26 -2.19 -2.37 -2.25]
[-2.43 -2.44 -2.25 -2.33 -2.33 -2.37 -2.30 -2.10 -2.37 -2.17]
[-2.33 -2.43 -2.28 -2.27 -2.34 -2.34 -2.28 -2.16 -2.37 -2.26]

之后:

 [-31.72 -31.65 -25.43 -20.04 -29.68  -0.00 -22.74 -25.88 -16.28 -13.30]  (5)
 [-12.44 -29.92 -21.19 -25.86 -22.53 -12.01  -0.00 -22.61 -18.88 -23.54]  (6)
 [-23.86 -25.77 -11.88  -9.18 -19.51 -20.85 -28.71  -0.00 -22.11 -14.57]  (7)
 [-33.67 -23.45 -17.82  -0.00 -28.89 -14.20 -32.54 -14.45 -11.13 -15.40]  (3)

UPD:所以培训是呈现出来的,但并没有达到它的目标.很多事情都可能是原因.除了技术问题,对于神经网络来说,任务可能会很复杂,例如,如果目标函数不能通过逐步改进来学习.

判断数据路径,try 简化任务,找到一些解决封闭问题的示例解决方案,判断并返工它.

Python相关问答推荐

日程优化问题不知道更好的方式来呈现解决方案- Python / Gekko

如何修复fpdf中的线路出血

如何将自动创建的代码转换为类而不是字符串?

我可以使用极点优化这个面向cpu的pandas代码吗?

模型序列化器中未调用现场验证器

更改Seaborn条形图中的x轴日期时间限制

有什么方法可以避免使用许多if陈述

Python 3.12中的通用[T]类方法隐式类型检索

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

根据不同列的值在收件箱中移动数据

按列分区,按另一列排序

log 1 p numpy的意外行为

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

driver. find_element无法通过class_name找到元素'""

在单个对象中解析多个Python数据帧

Polars asof在下一个可用日期加入

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

手动设置seborn/matplotlib散点图连续变量图例中显示的值

如何获取Python synsets列表的第一个内容?

OpenGL仅渲染第二个三角形,第一个三角形不可见