Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在多输出回归中得到每个输出的损失?_Python_Regression - Fatal编程技术网

Python 如何在多输出回归中得到每个输出的损失?

Python 如何在多输出回归中得到每个输出的损失?,python,regression,Python,Regression,为了分析数据,我需要每个输出维度的损失,相反,我只得到一个损失,我怀疑这是所有输出维度损失的平均值 了解我得到的损失是什么以及如何为每个输出获得单独损失的任何帮助: import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from scipy import stats from keras import models from keras.models import Sequential from k

为了分析数据,我需要每个输出维度的损失,相反,我只得到一个损失,我怀疑这是所有输出维度损失的平均值

了解我得到的损失是什么以及如何为每个输出获得单独损失的任何帮助:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from scipy import stats
from keras import models 
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras import optimizers
from sklearn.model_selection import KFold

siz=100000
inp0=np.random.randint(100, 1000000 , size=(siz,3))
rand0=np.random.randint(-100, 100 , size=(siz,2))
a1=0.2;a2=0.8;a3=2.5;a4=2.6;a5=1.2;a6=0.3
oup1=np.dot(inp0[:,0],a1)+np.dot(inp0[:,1],a2)+np.dot(inp0[:,2],a3)\
+rand0[:,0]
oup2=np.dot(inp0[:,0],a4)+np.dot(inp0[:,1],a5)+np.dot(inp0[:,2],a6)\
 +rand0[:,1]
 oup_tot=np.concatenate((oup1.reshape(siz,1), oup2.reshape(siz,1)),\
                   axis=1)
normzer_inp = MinMaxScaler()
 inp_norm = normzer_inp.fit_transform(inp0)
 normzer_oup = MinMaxScaler()
 oup_norm = normzer_oup.fit_transform(oup_tot)
 X=inp_norm
Y=oup_norm
kfold = KFold(n_splits=2, random_state=None, shuffle=False)
opti_SGD = SGD(lr=0.01, momentum=0.9)
model1 = Sequential()
for train, test in kfold.split(X, Y):
    model = Sequential()
    model.add(Dense(64, input_dim=X.shape[1], activation='relu'))
    model.add(Dense(64, activation='relu'))
    model.add(Dense(64, activation='relu'))
    model.add(Dense(Y.shape[1], activation='linear'))
    model.compile(loss='mean_squared_error', optimizer=opti_SGD)

    history = model.fit(X[train], Y[train], \
            validation_data=(X[test], Y[test]), \
            epochs=100,batch_size=2048, verbose=2)
我得到:

Epoch 1/100
  - 0s - loss: 0.0864 - val_loss: 0.0248

Epoch 2/100
 - 0s - loss: 0.0218 - val_loss: 0.0160

Epoch 3/100
  - 0s - loss: 0.0125 - val_loss: 0.0091

我想知道我现在得到的损失是什么,以及如何获得每个输出维度的损失。

将函数列表传递给compile函数中的
metrics
参数。请看这里:

import keras.backend as K

...

def loss_first_dim(y_true, y_pred):
    return K.mean(K.square(y_pred[:, 0] - y_true[:, 0]))

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=[loss_first_dim])

...