首页 > 编程知识 正文

loss和acc曲线情况,过拟合loss曲线

时间:2023-05-03 16:17:43 阅读:119640 作者:4777

代码importosimportargparseimportnumpyasnpimportmatplotlib.pyplotaspltdefmean _ list (valid _ ids,valid_values, stride iters=1000 (3360 length=len (valid _ ids ) nums=length//stride used _ ids=[ ] mean _ values=[ ] STD _ vallueer valid _ values=NP.as array (valid _ values ) forkinrange (nums ) :used_ids.append(int ) k * ssrarange iters ) ) ) ) ) 65 mean=NP.mean(temp_list ) STD=NP.STD ) temp_list ) mean_values.append ) mean ) ser () parser.add_argument('-s ','--server ',action='store_ )。 ' --show_all ',action='store_true ', efault=false (args=parser.parse _ args ) path=[ ' 2021-02-07-- 13-39-13 _ seg _ consist _ su suhu _ sn ] ' 2021-03-08-- 09-23-59 _ seg _ consist _ suhu _ sn EMI 3d _ D5 _ u200 _ pre 400 k _ w1 _ 550 ',' 2021-03 ' ' placeholder ' ] valid _ stride=1start=0train _ mode=1valid _ mode=2train _ MSE _ ylim=[ 0,0 ] valid _ MSE 0 valid _ mode=4# f _ valid=[ ' waterz _ ac4 _ 50.txt ' ] * len (path ); split_sign=False; valid _ mode=4# f _ valid=[ ' LMC _ ac3 _ 50.txt ' ] * len (path ); split_sign=False; valid _ mode=4# f _ valid=[ ' waterz _ cremia _ 50.txt ' ] * len (path ); split_sign=False; valid _ mode=4# f _ valid=[ ' waterz _ cre MIB _ 50.txt ' ] * len (path ); split_sign=False; valid _ mode=4# f _ valid=[ ' waterz _ cremic _ 50.txt ' ] * len (path ); split_sign=False; valid _ mode=4# f _ valid=[ ' waterz _ fib _ 50.txt ' ] * len (path ); split_sign=False; valid _ mode=4out _ path='./loss _ curves ' all _ title=[ ' train ',' validation ' ] img _ name=[ ' train ] all_best_value=[]for iters,pinenumerate(path ) : if args.server 3360 valid _ file=open ) OS.path.joinile = open(os.path.join(base_path, p, f_train[iters]), 'r') valid_list = [x[:-1] for x in valid_file.readlines()] ids_train = [] values_mse_train = [] id_val_mse_train = {} for f in valid_list: name = f.split(',') id_tmp = int(name[0].split(' ')[-1]) if 'consistency' in p or 'affine' in p: val_tmp = float(name[2].split('=')[-1]) else: val_tmp = float(name[train_mode].split('=')[-1]) if id_tmp != 1: id_val_mse_train.setdefault(id_tmp, val_tmp) length = len(id_val_mse_train) # length = 2000 best_train_mse_id = 100 best_train_mse_value = 10000 for k in range(100, 100*length, 100): ids_train.append(k) try: temp_value = id_val_mse_train[k] except: temp_value = 0.2 values_mse_train.append(temp_value) if temp_value < best_train_mse_value: best_train_mse_id = k best_train_mse_value = temp_value if args.server: valid_file = open(os.path.join(base_path, p, p, f_valid[iters]), 'r') else: valid_file = open(os.path.join(base_path, p, f_valid[iters]), 'r') valid_list = [x[:-1] for x in valid_file.readlines()] ids_valid = [] values_mse_valid = [] id_val_mse_valid = {} max_id = 0 for f in valid_list: name = f.split(',') if split_sign: id_tmp = int(name[0].split('-')[-1]) else: id_tmp = int(name[0].split('=')[-1]) val_tmp = float(name[valid_mode].split('=')[-1]) if id_tmp != 1: id_val_mse_valid.setdefault(id_tmp, val_tmp) max_id = id_tmp # length = len(id_val_mse_valid) length = max_id // 1000 # length = 210 best_valid_mse_id = 1000 best_valid_mse_value = 10000 for k in range(1000, 1000*length+1, 1000): ids_valid.append(k) try: temp_value = id_val_mse_valid[k] except: temp_value = 6 values_mse_valid.append(temp_value) if temp_value < best_valid_mse_value: best_valid_mse_id = k best_valid_mse_value = temp_value train_ids.append(ids_train) train_mse.append(values_mse_train) valid_ids.append(ids_valid) valid_mse.append(values_mse_valid) all_best_value.append(best_train_mse_id) all_best_value.append(best_train_mse_value) all_best_value.append(best_valid_mse_id) all_best_value.append(best_valid_mse_value)if args.server: plt.switch_backend('agg')if args.show_all: plt.figure(figsize=(10,10),dpi=100) for i in range(len(path)): plt.plot(train_ids[i][start:], train_mse[i][start:], label='%s_%d_%.6f' % (path[i][21:], all_best_value[4*i], all_best_value[4*i+1])) plt.plot(valid_ids[i][start:], valid_mse[i][start:], label='%s_%d_%.6f' % (path[i][21:], all_best_value[4*i+2], all_best_value[4*i+3])) plt.title('train+valid') plt.legend() if train_mse_ylim[1] > 0: plt.ylim(train_mse_ylim[0], train_mse_ylim[1]) plt.grid() plt.savefig(os.path.join(out_path, img_name[0] + '.png'), bbox_inches = 'tight') if not args.server: plt.show() plt.close('all')else: plt.figure(figsize=(10,10),dpi=100) for i in range(len(path)): plt.plot(train_ids[i][start:], train_mse[i][start:], label='%s_%d_%.6f' % (path[i][21:], all_best_value[4*i], all_best_value[4*i+1])) plt.title(all_title[0]) if train_mse_ylim[1] > 0: plt.ylim(train_mse_ylim[0], train_mse_ylim[1]) plt.legend() plt.grid() plt.savefig(os.path.join(out_path, img_name[0] + '.png'), bbox_inches = 'tight') if not args.server: plt.show() plt.close('all') if args.server: plt.switch_backend('agg') plt.figure(figsize=(10,10),dpi=100) for i in range(len(path)): used_ids, mean_values, std_vallues = mean_list(valid_ids[i], valid_mse[i], stride=valid_stride, iters=1000) std_down = [mean_values[x]-std_vallues[x] for x in range(len(mean_values))] std_up = [mean_values[x]+std_vallues[x] for x in range(len(mean_values))] plt.plot(used_ids, mean_values, label='%s_%d_%.6f' % (path[i][21:], all_best_value[4*i+2], all_best_value[4*i+3])) plt.fill_between(used_ids, std_down, std_up, alpha=0.3) # plt.plot(valid_ids[i][start:], valid_mse[i][start:], label='%s_%d_%.6f' % (path[i][21:], all_best_value[4*i+2], all_best_value[4*i+3])) plt.title(all_title[1]) if valid_mse_ylim[1] > 0: plt.ylim(valid_mse_ylim[0], valid_mse_ylim[1]) plt.legend() plt.grid() plt.savefig(os.path.join(out_path, img_name[1] + '.png'), bbox_inches = 'tight') if not args.server: plt.show() plt.close('all') 结果展示

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。