测试部分的代码:

if (count-1) % 1400 == 0:

vset,vlabel = getdata(eng, 20) #get full validation_set

vnum_batches = vset.shape[0] // validation_size

order = np.random.choice(vset.shape[0], vnum_batches * validation_size,replace = False)

va_data_subset = vset[order,:]

va_labels_subset = vlabel[order]

loss_list = []

error_list = []

loss_list_s = []

error_list_s = []

for stepv in range(vnum_batches):

offsetv = stepv * validation_size

feed_dict_shuffle = {

x: va_data_subset[offsetv:offsetv+validation_size,:],

y: va_labels_subset[offsetv:offsetv+validation_size],

}

vloss_s, vacc_s = sess.run([loss, accuracy], feed_dict=feed_dict_shuffle)

loss_list_s.append(vloss_s)

error_list_s.append(vacc_s)

feed_dict = {

x: vset[offsetv:offsetv+validation_size,:],

y: vlabel[offsetv:offsetv+validation_size],

}

vloss, vacc = sess.run([loss, accuracy], feed_dict=feed_dict)

loss_list.append(vloss)

error_list.append(vacc)

vloss_s = np.mean(loss_list_s)

vacc_s = np.mean(error_list_s)

vloss = np.mean(loss_list)

vacc = np.mean(error_list)

打乱过的验证集准确率会随著训练次数增加,基本跟训练集的准确率相等

没打乱过的,初始化就是20%(7分类),迭代了几万次准确率超不过30%,这时训练集已经90%了,明显看起来过拟合了


代码看不出来,我觉得你可以考虑一下数据与标签是否匹配的问题


原始数据存在一定的分布规律,所以学习曲线不平滑,如果数据量够大的话,打乱后会呈现随机分布,学习后更能体现样本的共性。

举个简单例子,我们中学时代都参加了无数的考试,为了考试我们会做很多套卷子,每套卷子上都会有选择题、填空题、判断题、问答题等等类型的题型,试想一下如果我们花一个月时间天天练习选择题,然后再花一个月时间天天练习填空题,再花一个月时间天天练习判断题,最后花一个月时间练习问答题,短期来看每中类型的题目我们都会做得很好,但把时间维度拉长,当我们练习完问答题的时候也许做填空题的能力已经大不如前。

不管是什么训练网路都会出现这种问题,并不是残差网路才会出现这个现象。


兄弟,放STACKOVERFLOW上吧,无论格式还是关注度,都比在这里好多了...


个人觉得这个挺正常的,首先不知道你训练的时候有没有打乱顺序,无论是训练还是验证都应该打乱顺序的,打乱顺序是为了使每一个batch的样本特征的分布尽可能的与全部样本的特征分布相同,举个例子:比如说做人脸识别,有8张图像的鼻子特征更明显一些,有8张图像的嘴巴特征更明显一些,你用鼻子特征更明显的模型识别嘴巴特征更明显的图像效果就会差一些,如果不进行随机,可能就会有一个batch进入的都是鼻子特征明显的图像,同时有可能有一个batch进入的是嘴巴特征明显的图像,这两个batch的验证结果就会不一样。感觉这是一种均匀分布的思想


两种可能:

1.数据不一样

2.数据不等长,zero padding和mask没处理好


楼上说的对,测试数据不一样


你训练集打乱顺序了么,还有,你测试迭代次数*测试batchsize是否大于等于测数数据量,很有可能是一次测试没有覆盖全部测试数据,模型本身对某些类型数据有偏移,导致多次测试时结果不一致。


请问你的问题得到解决了吗,我也遇到了同样的问题


各位可能没太理解问题,我这里再说清楚点

首先,训练集我是打乱顺序了,验证集固定,只是顺序输入和打乱顺序输入的区别,这样在验证集上算出来的准确率相差很大,不太理解为什么。

测试代码贴了出来,感觉没什么问题。


推荐阅读:
相关文章