Когда я тренирую Resnet, точность набора проверки в случайном порядке не равна версии в случайном порядке.Тренировочный набор перетасовывается таким же образом.
Я пытался каждый раз использовать одну выборку для подачи в сеть и получил одинаковую точность в наборе вали.Но когда я каждый раз использую партию сэмплов, скажем, 256, акваурин не равен.
процесс обучения
count = 1
while 1:
#get training_data
if (count - 1) % 5200 == 0:
train_set,train_label = get_traindata(eng, 70)
tset,tlabel = train_set,train_label
tset_num = tset.shape[0]
#split and train
num_batches = tset_num // batch_size
order = np.random.choice(tset_num, num_batches * batch_size,replace = False)
train_data_subset = tset[order,:]
train_labels_subset = tlabel[order]
for step in range(num_batches):
offset = step * validation_size
feed_dict = {
x: train_data_subset[offset:offset+batch_size,:],
y: train_labels_subset[offset:offset+batch_size],
}
_, tloss, tacc,gd = sess.run([train_op,loss, accuracy,grad_norm],
feed_dict=feed_dict)
if (count-1) % 200 == 0:
#get validationset
if (count-1) % 1400 == 0:
vset,vlabel = get_validata(eng, 20)
vnum_batches = vset.shape[0] // validation_size
order = np.random.choice(vset.shape[0], vnum_batches * validation_size,replace = False) #shuffled
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)
#the performance in the shuffled vali-set
vloss_s = np.mean(loss_list_s)
vacc_s = np.mean(error_list_s)
#the performance in the unshuffled vali-set
vloss = np.mean(loss_list)
vacc = np.mean(error_list)
Теоретически порядок набора значений не влияетрезультат.