ValueError:发现样本数不一致的输入变量:[83854]



我正在处理一项分类任务。我得到了这个错误:

ValueError:发现样本数不一致的输入变量:[8853854]。

854是y_pred的大小,853是y_true的大小。我不知道为什么y_true的大小和y_pred的大小不一样。尽管作为获得CCD_ 6和CCD_ 7的输入的CCD_。

我在这行得到了错误:

tp,fp,tn,fn = perf_measure(y_true,y_pred)

我不知道如何解决这个错误,如有任何帮助,不胜感激。

我工作了4天来解决这个错误。

这是代码:

def generate_y_true(indexPat, paths, start=0, end=100):
y_true = []
from_=int(len(paths)/100*start)
to_=int(len(paths)/100*end)
for i in range(from_, int(to_)):
f=paths[i]
x = np.load(PathSpectogramFolder+f)
x = np.expand_dims(np.expand_dims(x, axis=0), axis = 0)
x = x.transpose(0, 2, 3, 1)
if('P' in f):
y_true.extend([1]*x.shape[0])
else:
y_true.extend([0]*x.shape[0])
return y_true
def perf_measure(y_actual, y_hat):
TP = 0
FP = 0
TN = 0
FN = 0
for i in range(len(y_hat)): 
if y_actual[i]==y_hat[i]==1:
TP += 1
if y_hat[i]==1 and y_actual[i]!=y_hat[i]:
FP += 1
if y_actual[i]==y_hat[i]==0:
TN += 1
if y_hat[i]==0 and y_actual[i]!=y_hat[i]:
FN += 1
return(TP, FP, TN, FN)
y_true = generate_y_true(indexPat, validation_data)
tp,fp,tn,fn=perf_measure(y_true,y_pred) 

虽然我无法对代码有更全面的了解,但我怀疑错误来自这里:

from_=int(len(paths)/100*start)
to_=int(len(paths)/100*end)

很可能你错过了一个指数(853而不是854(,用这种除法,你得到的不是854,而是853。

同时在此循环中:

for i in range(from_, int(to_))

请记住,您没有达到上限间隔int(to_),for循环一直循环到int(to_)-1

我希望它能帮你解决问题。

最新更新