微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在不影响结果的情况下填充Tensorflow训练数据

如何解决在不影响结果的情况下填充Tensorflow训练数据

总体而言,我对张量流和神经网络非常陌生。我正在尝试创建一种监督式深度学习算法,以使用tensorflow和python在给定起点和终点坐标对的情况下预测路径。目标是使用现有的路径数据集训练神经网络,并使用起点-终点坐标作为输入来创建看起来相似的路径。
我的训练数据包含80,126批数量不同的x和y坐标对。为了将这些数据用于训练,我将批次填充到最长路径的长度,以便最终得到形状为(80126,111,2)的矩阵。然后,我转置内部向量,以便每个批次都包含一个x坐标向量和一个y坐标向量(我无法让我的模型正确使用x,y对)。例如:

[[859,853,777,748,554,544,541,530,531,0],[228,228,263,284,381,387,399,438,460,464,471,0]]

但是,问题是,每当我使用这些数据来训练模型时,我都会得到暗示零填充影响结果的结果。像这样: training data vs trained model(蓝色是原始路径减去零垫,橙色是经过训练的路径)
为了解决这个问题,我尝试添加一个遮罩层,该遮罩层将零个时间步长值屏蔽掉:

model.add(tensorflow.keras.layers.Masking(mask_value=0,input_shape=(2,2)))

但是,这不能解决问题。很明显,我对掩膜层的理解是有缺陷的。我在这里做错什么,以及如何使用零填充数据训练模型?

下面是我的模型代码
(我正在使用tensorflow 1.5和python 2.6.9)

import tensorflow
import numpy as np
import pandas

model = tensorflow.keras.models.Sequential()
model.add(tensorflow.keras.layers.Masking(mask_value=0,2)))
model.add(tensorflow.keras.layers.Dense(127,activation='relu' ))
model.add(tensorflow.keras.layers.Dense(111,activation='linear'))

model.summary()

inputs = np.load('inputs.npy').transpose(0,2,1)
paths = np.load('paths.npy',allow_pickle=True).transpose(0,1)

data_set = tensorflow.data.Dataset.from_tensor_slices((inputs,paths))

model.compile(optimizer='adam',loss='mean_squared_error')

history = model.fit(inputs,paths,epochs=3)

history.history

prediction = model.predict(inputs)
np.save('results',prediction)

作为参考,我的项目类似于:Generating mouse movement with ANN

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。