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

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

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

代码说明: 我在 (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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?