将我自己的损失函数添加到均方误差函数

问题描述

代码说明: 我在 (def cOfl) 中计算每个班级的平均值 然后我计算每个具有相同类号和类平均值的数据之间的距离 - 然后我将所有这些数据加在一起并将其放入变量 SC 中。

然后我计算所有类平均值之间的距离,并将所有这些数据加在一起并将其放入变量 SP。

我的问题: 现在我想将我自己的损失函数(sc/sp)与 python 中的均方误差函数结合起来。 我不知道该怎么做。 ...请帮帮我...

import h5py
import numpy as np
from keras.layers import Input,Dense
from keras.models import Model
import pickle
from scipy.spatial import distance
import tensorflow as tf
from tensorflow.keras import backend as K

#my  data set has two arrays thet one of them included some numerical data and the other included ten 
classes from zero to nine because every data has class number
with open('/content/drive/MyDrive/H5555/Visual_Feature_for_Select_Objects.pkl','rb') as f:  
    pklfile = pickle.load(f)
Data = np.asarray(pklfile['Select_Objects_feature'],dtype=float)
Label = np.asarray(pklfile['Corresponding_Select_Objects_class'],dtype=float)

countOfLabel = np.zeros(10,dtype=int) #count of each lable
NumberOfClass = Label.max() - Label.min() + 1; #number or class 
NumberOfClass=NumberOfClass.astype(np.int64) #convert numpyfloat.64 to int64
sizeData = np.shape(Data)#(2378,2048)
average = np.zeros((10,2048),dtype=float)


#cOfl
def cOfl(label,data):
    for i in range(NumberOfClass):
        for j in range(sizeData[0]):
            if Label[j]==i+1:
                countOfLabel[i] += 1
    print(countOfLabel)
    return countOfLabel

#AVG
def avg(label,data,cOfl):
    for i in range(NumberOfClass):
        for j in range(sizeData[0]):
            if label[j]==i+1:
                average[i] += data[j]
        average[i]= average[i]/cOfl[i]
    return average

#SC
def sc(label,data):

    #distance
    d = np.zeros((NumberOfClass,sizeData[1]),dtype=float)#(10*2048)
    for i in range(NumberOfClass):
        for j in range(sizeData[0]):
            if label[j]==i+1:
                d[i] += (abs(distance.cosine(average[i],data[j])))
   
    return d.sum()

#SP
def sp(label,data):

    #distanse
    d = np.zeros(NumberOfClass,dtype=float)
    for i in range(NumberOfClass):
        for j in range(NumberOfClass):
            d[i] += (abs(distance.cosine(average[i],average[j])))
   
    return d.sum()
#-------------------------------------------------------------------------------------------

c = cOfl(Label,Data)
a = avg(Label,Data,countOfLabel)
scc = sc(Label,Data)
spp = sp(Label,Data)

def lossFun(scc,spp):
  loss = ((scc / spp) + (mean-square-error) )     #i dont kNow how i can do it right there
  return loss

#-------------------------------------------------------------------------------------------
from keras.layers import Input,Dense
from keras.models import Model
from keras.datasets import mnist

import numpy as np
import matplotlib.pyplot as plt

INPUT_SIZE = 2048
ENCODING_SIZE = 50

input_img = Input(shape=(INPUT_SIZE,))
encoded = Dense(ENCODING_SIZE,activation='relu')(input_img)
decoded = Dense(INPUT_SIZE,activation='relu')(encoded)
autoencoder = Model(input_img,decoded)



autoencoder.compile(optimizer='adam',loss=lossFun)
autoencoder.fit(Data,epochs=50,batch_size=256,shuffle=True,validation_split=0.2)

decoded_imgs = autoencoder.predict(Data)

如何将 (scc / spp) 添加到均方误差???

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...