我正在处理时间序列数据,预计输出60天.
我目前正在使用均方误差作为我的损失函数,结果很糟糕
我想实现加权均方误差,使得早期输出比后期输出重要得多.
加权均方根公式:

所以我需要一些方法来迭代张量的元素,带有索引(因为我需要同时迭代预测值和真值,然后将结果写入只有一个元素的张量.它们都是(?,60)但真的(1,60)列表.
我正在尝试的任何东西都在起作用.这是破碎版本的代码
def weighted_mse(y_true,y_pred):
wmse = K.cast(0.0,'float')
size = K.shape(y_true)[0]
for i in range(0,K.eval(size)):
wmse += 1/(i+1)*K.square((y_true[i]-y_pred)[i])
wmse /= K.eval(size)
return wmse
Run Code Online (Sandbox Code Playgroud)
我目前正在收到此错误:
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'dense_2_target' with dtype float
[[Node: dense_2_target = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
Run Code Online (Sandbox Code Playgroud)
阅读了类似帖子的回复之后,我认为掩码不能完成任务,并且在一个张量中循环元素也行不通,因为我无法访问其他张量中的相应元素.
任何建议,将不胜感激
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import LSTM
from keras.optimizers import Adam
from sklearn.preprocessing import MinMaxScaler
def create_dataset(dataset, datasetClass, look_back):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(datasetClass[:,(i+look_back):(i+look_back+1)])
return np.array(dataX), np.array(dataY)
def one_hot_encode(dataset):
data = np.zeros((11, len(dataset)),dtype='int')
for i in range(len(dataset)):
data[dataset[i]-1,i] = 1
return data
#Set a seed for repeatable results
np.random.seed(12)
dataframe = pd.read_csv('time-series.csv', usecols=[1], …Run Code Online (Sandbox Code Playgroud)