![](/img/trans.png)
[英]ValueError: Found input variables with inconsistent numbers of samples:
[英]ValueError: Found input variables with inconsistent numbers of samples: [853, 854]
我正在处理分类任务。 我收到此错误:
ValueError:发现样本数量不一致的输入变量:[853, 854]。
854 是y_pred
的大小,853 是y_true
的大小。 我不知道为什么y_true
的大小与y_true
y_pred
。 尽管作为获取y_pred
和y_true
的输入的validation_data
的大小是 854。
我在这一行收到错误:
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循环中:
for i in range(from_, int(to_))
请记住,您没有达到上限区间int(to_)
,for 循环一直循环到int(to_)-1
。
我希望它可以帮助您解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.