如何解决将我自己的损失函数添加到均方误差函数
代码说明: 我在 (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 举报,一经查实,本站将立刻删除。