Commit 2b12bc82 by ZhangLingbo

update for alphazero, not tested

parent 8cb5bfd0
3.png

38.4 KB

#!/usr/bin/python
# coding=utf-8
import os
from PK import pk
import time
import random
import re
import sys
import zmq
def main():
mlu_id = int(sys.argv[1])
assert(mlu_id < 4 and mlu_id >= 0)
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect('tcp://10.34.134.204:1238')
socket.send('')
while True:
task = socket.recv().split('-')
black, white = task[0:2]
if len(task) == 2:
bwin = pk(black, white, 1, mlu_id)
elif len(task) == 4:
bwin = pk(black, white, 1, mlu_id, task[2].strip(), task[3].strip())
socket.send('-'.join([str(black), str(white), str(bwin)]))
if __name__ == '__main__':
main()
......@@ -3,6 +3,7 @@ from elorating import EloRatingSystem
import numpy as np
import random
import os
import sys
import re
import time
......@@ -44,7 +45,13 @@ def main():
if os.path.exists(cd('stop.txt')):
os.remove(cd('stop.txt'))
if os.path.exists('gameRecord.txt'):
if os.path.exists('output.txt'):
print('\n output.txt has found!')
if askYes('read it? if not,will delete it and create a new one <y/n> :'):
elo.readELO('output.txt')
else:
os.remove('output.txt')
elif os.path.exists('gameRecord.txt'):
print('\n game records has found!')
if askYes('read it? if not,will delete it and create a new one <y/n> :'):
elo.readRecords('gameRecord.txt')
......@@ -80,7 +87,12 @@ def play(total_game):
def choose():
#挑选比赛对手,选择分数相近的作为比赛对手
while True:
players=elo.getPlayers(sortByRank=True)
players=elo.getPlayers(sortByRank=False)
# maxgame = 10000
# players=elo.getPlayersWithLessGames(sortByRank=False, maxgame = maxgame)
# if (len(players) == 0):
# print("player with num_game <= {} Not found!".format(maxgame))
# assert(False)
black=random.choice(players).name
matchList=elo.getNearPlayer(black)
if matchList:
......@@ -113,7 +125,10 @@ def play(total_game):
# white=res.group(2)
# winrate=int(res.group(3))
elo.playgame(black,white,winrate)
try:
os.remove(cd(os.path.join('comm',d)))
except:
pass
count+=1
return count
......@@ -144,8 +159,11 @@ def play(total_game):
create_game(min(max_game - num, total_game - complete_game - num + 10))
elif num == 0:
break
sys.stdout.write('{}/{} games completed, taking {:.1f}s\r'.format(complete_game,total_game, time.time() - tstart))
sys.stdout.flush()
if (complete_game >= save_step_id * save_step):
print('{}/{} games completed, taking {}s'.format(complete_game,total_game, time.time() - tstart))
# print('{}/{} games completed, taking {}s'.format(complete_game,total_game, time.time() - tstart))
if (save_step_id > 0):
elo.save(saveFile='output.txt',sortByRank=True)
save_step_id = complete_game / save_step + 1
......
# coding=utf-8
from elorating import EloRatingSystem
import numpy as np
import random
import os
import sys
import re
import time
import zmq
import threading
from Queue import Queue
commdir='share' #共享目录
def cd(path):
return os.path.join(commdir,path)
elo=EloRatingSystem(recordSaveFile='gameRecord.txt') #初始化
save_step = 1000
def askYes(str):
ans=''
while True:
ans=raw_input(str)
ans=ans.lower()
if ans=='y' or ans=='yes':
return True
elif ans=='n' or ans=='no':
return False
else:
print('please input <y|n>')
def main():
print('--------------ELO rating system---------------')
if os.path.exists('models.txt'):
print('read models from models.txt')
with open('models.txt','r') as f:
lines=f.readlines()
models=[l.strip() for l in lines]
else:
models=[str(i) for i in range(300)] #模型的名字
print('default models:range(0,300,1) or [0,299]')
elo.addModels(models) #添加模型
elo.summary() #查看现有模型
os.system('touch '+cd('pause.txt')) #通知client先不必行动
if not os.path.exists(cd('comm')):
os.mkdir(cd('comm'))
if os.path.exists(cd('stop.txt')):
os.remove(cd('stop.txt'))
if os.path.exists('output.txt'):
print('\n output.txt has found!')
if askYes('read it? if not,will delete it and create a new one <y/n> :'):
elo.readELO('output.txt')
else:
os.remove('output.txt')
elif os.path.exists('gameRecord.txt'):
print('\n game records has found!')
if askYes('read it? if not,will delete it and create a new one <y/n> :'):
elo.readRecords('gameRecord.txt')
else:
os.remove('gameRecord.txt')
commandList=[r'play (\d+)','summary','stop','save']
print('commandList:\n '+'\n '.join(commandList))
ans=raw_input('>>')
while True:
if ans=='stop':
os.system('touch '+cd('stop.txt'))
break
elif ans=='summary':
elo.summary()
elif ans=='save':
elo.save(saveFile='output.txt',sortByRank=True)
else:
matchRes=re.match(r'play (\d+)',ans)
if matchRes:
num=matchRes.group(1)
play(int(num))
print('commandList:\n '+'\n '.join(commandList))
ans=raw_input('>>')
def play(total_game):
max_game=800
complete_game=0
pause_flag='pause.txt'
if os.path.exists(cd(pause_flag)):
os.remove(cd(pause_flag)) #去掉上次的暂停标志
rolloutMap = {}
if os.path.exists('rollout_map.txt'):
with open('rollout_map.txt', 'r') as f:
for lines in f.readlines():
ls = lines.split(':')
rlen = ls[1].split(',')
if rlen < 162:
ls[1] += [',200'] * (162 - rlen)
rolloutMap[ls[0]] = ls[1]
def getRolloutMap(model):
base_r = 200
max_step = 162
if model in rolloutMap:
return rolloutMap[model]
else:
return ','.join([str(base_r)]*max_step)
def choose():
while True:
# players=elo.getPlayers(sortByRank=False)
players = elo.players.values()
new_player_thres = 500
try_select_new_player = 1
while try_select_new_player > 0:
black=random.choice(players)
if black.num_game < new_player_thres:
break
try_select_new_player -= 1
black = black.name
matchList=elo.getNearPlayer(black)
if matchList:
white=random.choice(matchList)
if 'DR' in black or 'DR' in white:
return black, white, getRolloutMap(black), getRolloutMap(white)
else:
return black,white
else:
continue
idx=0
elo.save(saveFile='output.txt',sortByRank=True)
save_step_id = 0
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:1238")
work_pool = Queue(1000)
def produce_work(q):
while True:
q.put(choose())
# def auto_add_model():
# monitor = ['share-1', 'share-2', 'share-3', 'share-4']
# player_prefix = {m:m.replace('-', '') + '_' for m in monitor}
# model_iter = {m:0 for m in monitor}
# model_iter_delta = 1000
# def getModelName(share, m):
# if share == 'share-1':
# share = 'share'
# return '/'+str(share)+'/go9_data/caffemodel/received/agz9_iter_'+str(m)+'.cambricon'
# def getPlayerName(share, m):
# return player_prefix[share] + str(m)
# while True:
# for share in monitor:
# model_path = getModelName(share, model_iter[share])
# if os.path.exists(model_path):
# model_iter[share] += model_iter_delta
# player_name = getPlayerName(share, model_iter[share])
# if player_name not in elo.players:
# os.symlink(model_path, 'models/'+player_name)
# with open('models.txt', 'a+') as f:
# f.write(player_name +'\n')
# elo.addModel(player_name)
# print('\nadd player ' + player_name)
#
# model_monitor = threading.Thread(target=auto_add_model, args=())
# model_monitor.setDaemon(True)
# model_monitor.start()
work_producers = []
for i in range(16):
work_producers.append(threading.Thread(target=produce_work, args=(work_pool,)))
work_producers[i].setDaemon(True)
work_producers[i].start()
tstart = time.time()
complete_game = 0
while True:
m = socket.recv()
socket.send('-'.join(work_pool.get()))
if m == '':
continue
black, white, bwin = m.split('-')
elo.playgame(black, white, float(bwin))
complete_game += 1
sys.stdout.write('{}/{} games completed, taking {:.1f}s\r'.format(complete_game, total_game, time.time() - tstart))
sys.stdout.flush()
if (complete_game >= save_step_id * save_step):
if (save_step_id > 0):
elo.save(saveFile='output.txt',sortByRank=True)
save_step_id = complete_game / save_step + 1
if __name__ == '__main__':
main()
......@@ -4,46 +4,53 @@ import time
import os
import commands as cmd
pj_dir = "/share/sxk_mlu_alphago"
pj_dir = "/share/2_sxk_mlu_alphago_"
data_dir = "/share/data_sxk"
model_dir = "/share/elo-rating/models/"
def get_cmd(num_games, mlu, model1, model2, rollout, c_puct):
def get_cmd(num_games, mlu, model1, model2, rollout, c_puct, rollouts0 = '-1', rollouts1 = '-1'):
cmd_str = ""
cmd_str += "%s " % (os.path.join(pj_dir, "build", "pk"))
cmd_str += "--eval_game_num %d " %(num_games)
cmd_str += "--mlu_list_0 %d "%(mlu)
cmd_str += "--mlu_list_1 %d "%(mlu)
cmd_str += "--config_path_0 %s "%(os.path.join(pj_dir, "etc", "9_pk_offline.conf"))
cmd_str += "--config_path_1 %s "%(os.path.join(pj_dir, "etc", "9_pk_offline.conf"))
cmd_str += "--config_path_0 %s "%(os.path.join('/share/elo-rating', "etc", "9_pk_offline_1.4.0.conf"))
cmd_str += "--config_path_1 %s "%(os.path.join('/share/elo-rating', "etc", "9_pk_offline_1.4.0.conf"))
cmd_str += "--model_path_0 %s "%(model1)
cmd_str += "--model_path_1 %s "%(model2)
cmd_str += "--rollout_0 %d "%(rollout)
cmd_str += "--rollout_1 %d "%(rollout)
cmd_str += "--rollouts_0 %s "%("-1")
cmd_str += "--rollouts_1 %s "%("-1")
cmd_str += "--rollouts_0 %s "%(rollouts0)
cmd_str += "--rollouts_1 %s "%(rollouts1)
cmd_str += "--c_puct_0 %f "%(c_puct)
cmd_str += "--c_puct_1 %f "%(c_puct)
# TODO: check this
# cmd_str += "--result_path %s "%("-1")
return cmd_str
def pk(model1, model2, num_games = 1, mlu_id = 0):
rollout = 400
c_puct = 0.8
def pk(model1, model2, num_games = 1, mlu_id = 0, rollouts1='-1', rollouts2 = '-1'):
rollout = 200
if rollouts1 != '-1':
assert(rollouts2 != '-1')
rollout = -1
c_puct = 1.5
model1 = model_dir + model1
model2 = model_dir + model2
cmd_str = get_cmd(num_games, mlu_id, model1, model2, rollout, c_puct)
cmd_str = get_cmd(num_games, mlu_id, model1, model2, rollout, c_puct, rollouts1, rollouts2)
s, o = cmd.getstatusoutput(cmd_str)
win = 0
# os.system(cmd_str)
if (s != 0):
print(o)
assert(s == 0)
# print(o)
win = 1 - float(o.strip().split(":")[-1])
print("%s vs %s, win_rate = %f" % (model1.split('/')[-1], model2.split('/')[-1], win))
return win
if __name__ == "__main__":
model1 = "R1600_M1600_600000"
model2 = "R400_M400_180000"
res = pk(model1, model2, 100, 3)
model1 = "test"
# model1 = "R1600_M1600_600000"
model2 = "test"
res = pk(model1, model2, 1, 3)
#测试用pk函数
# def pk(model1,model2,num_games=1):
......
File added
0, 73.91
1, 289.22
2, 357.78
3, 397.51
4, 517.34
5, 665.53
6, 676.59
7, 797.3
8, 928.37
9, 950.17
10, 1030.65
11, 993.63
12, 1040.76
13, 1080.45
14, 1271.51
15, 1312.31
16, 1249.38
17, 1308.56
18, 1345.12
19, 1464.62
20, 1567.62
21, 1547.04
22, 1657.79
23, 1676.79
24, 1733.06
25, 1719.56
26, 1841.36
27, 1892.69
28, 1989.22
29, 1991.27
30, 2057.95
31, 2122.06
32, 2143.92
33, 2241.52
34, 2204.19
35, 2229.15
36, 2236.97
37, 2251.55
38, 2240.42
39, 2325.32
40, 2325.18
41, 2414.34
42, 2384.25
43, 2419.9
44, 2373.72
45, 2428.2
46, 2467.21
47, 2402.1
48, 2455.92
49, 2415.19
50, 2451.3
51, 2418.11
52, 2429.11
53, 2442.6
54, 2449.93
55, 2514.59
import os
best_num = 0
rec = list(range(100))
with open('output.txt', 'r') as f:
lines = f.readlines()
for l in lines:
if l.startswith('R400_M100'):
idx = int(l.split()[0].split('_')[-1])
if idx > 0 and idx < 1000:
rec[idx - 1]= float(l.split()[1])
best_num += 1
with open("R400_M100_best", 'w') as f:
for i in range(best_num):
f.write("{}, {}\n".format(i, rec[i]))
#!/usr/bin/python
import numpy as np
import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
model={}
with open('bak/output.txt_bak', 'r') as f:
routines = []
labels = routines
smooth_window = 10
# labels = ['test17', 'test18']
filename = 'output.txt'
filename = 'outputs/10-09_00-30-47'
if len(sys.argv) == 2:
filename = sys.argv[1]
with open(filename, 'r') as f:
lines = f.readlines()
for l in lines:
if l.startswith('R'):
l = l.strip()
model[l.split()[0]] = float(l.split()[1])
for l in lines[1:]:
#if l.startswith('R') or l.startswith('D') or l.startswith('s'):
# l = l.strip()
# model[l.split()[0]] = float(l.split()[1])
model_name = l.strip().split()[0]
if int(model_name.split("_")[1]) > 150000:
continue
model[model_name] = float(l.split()[1])
routine = model_name.split('_')[0]
if routine not in routines:
routines.append(routine)
print (model)
def getInfo(k):
ks = k.split('_')
r = int(ks[0].lstrip('R'))
m = int(ks[1].lstrip('M'))
i = int(ks[2])
return r, m, i
key = '_'.join(ks[0:len(ks) - 1])
i = int(ks[-1])
return key, i
def cmpKey(k1, k2):
k1 = k1[0]
k2 = k2[0]
r1, m1, i1 = getInfo(k1)
r2, m2, i2 = getInfo(k2)
if (r1 != r2):
return r1 - r2
elif (m1 != m2):
return m1 - m2
key1, i1 = getInfo(k1)
key2, i2 = getInfo(k2)
if (key1 != key2):
return -1 if key1 < key2 else 1
else:
return i1 - i2
smodel = model.items()
print(smodel)
smodel.sort(cmp = cmpKey)
print(smodel)
def getPlot(mp, r, m):
def smooth(x, N):
y = []
for i in range(len(x)):
y.append(np.average([x[i+j] for j in range(N) if i+j >= 0 and i+j < len(x)]))
return y
from scipy.interpolate import spline
def getPlot(mp, key):
x = []
y = []
for k, v in mp:
kr, km, ki = getInfo(k)
if km == m and kr == r:
kkey, ki = getInfo(k)
if kkey == key:
if ki > 500 or ki == 0:
x.append(ki)
y.append(v)
return x, y
def getStr(r, m):
return "R%d_M%d" % (r, m)
routines = [[400, 400],[400, 1600],[1600,400],[1600, 1600]]
colors = ['red', 'blue', 'black', 'yellow', 'green', 'cyan', 'slateblue', 'peru', 'slategrey']
for i in range(len(routines)):
plt.plot(*getPlot(smodel, *routines[i]), color = colors[i], linestyle='--', label=getStr(*routines[i]))
# plt.plot(*getPlot(smodel, *routines[0]), color = colors[0], linestyle='--', label=getStr(*routines[0]))
# plt.plot(*getPlot(smodel, *routines[1]), color = colors[1], linestyle='--', label=getStr(*routines[1]))
# plt.plot(*getPlot(smodel, *routines[2]), color = colors[2], linestyle='--', label=getStr(*routines[2]))
# plt.plot(*getPlot(smodel, *routines[3]), color = colors[3], linestyle='--', label=getStr(*routines[3]))
plt.legend()
# new_x = np.linspace(min(x), max(x), 300)
# new_y = spline(x, y, new_x)
new_x = x
# new_y = y
new_y = smooth(y, smooth_window)
return new_x, new_y
# def getStr(key):
# if pre == None or pre == '':
# return "R%d_M%d" % (r, m)
# else:
# return pre + "_" + "R%d_M%d" % (r, m)
# routines = [[400, 400],[400, 1600],[1600,400],[1600, 1600], [1600, 100], [400, 100]]
#colors = ['red', 'blue', 'black', 'yellow', 'green', 'cyan', 'slateblue', 'peru', 'slategrey']
# plt.figure(figsize=(16,12), dpi=200)
#plt.xlim(0,50000)
font_size = 12
labels_ = {73: "100", 74: "200", 77: "50", 78: "1600", 79: "400", 80: "800"}
# for i in range(len(routines)):
for i in [0]:
# if not int(routines[i].split("test")[-1]) in [90, 92, 93]:
# continue
if int(routines[i].split("test")[-1]) not in labels_.keys():
continue
plt.plot(*getPlot(smodel, routines[i]), linestyle='-', label=labels_[int(routines[i].split("test")[-1])])
# plt.plot(*getPlot(smodel, routines[i]), linestyle='-', label=routines[i])
plt.xlabel("Training Iteration", fontsize=font_size)
plt.ylabel("Elo-Rating", fontsize=font_size)
# plt.legend(loc="lower left", fontsize=font_size)
plt.show()
plt.savefig('figure.png')
# x_data = ['2011','2012','2013','2014','2015','2016','2017']
# y_data = [58000,60200,63000,71000,84000,90500,107000]
# y_data2 = [52000,54200,51500,58300,56800,59500,62700]
#
# plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
# plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
# plt.show()
# table = Texttable()
# table.add_rows()
# print(table.draw())
# def getRoutine(k):
# k = k[0]
# return k.split('_')[0] + '_' + k.split('_')[1]
# rm = {}
# for k in smodel:
# krm = getRoutine(k)
# if krm not in rm:
# rm[krm] = list()
# rm[krm].append(k[1])
# print(rm)
# print(max_iter)
......@@ -161,15 +161,28 @@ class EloRatingSystem:
k=choose_k(R2)
player2.rating=R2+k*(1-winrate-E2)
if player1.rating<0:
player1.rating=0
elif player2.rating<0:
player2.rating=0
# if player1.rating<0:
# player1.rating=0
# elif player2.rating<0:
# player2.rating=0
if online:
# print('winrate: {}. {}\'s rating:{}->{} ; {}\'s rating:{}->{}'.format(winrate, p1,R1,player1.rating,p2,R2,player2.rating))
pass
def readELO(self, fname):
with open(fname, 'r') as f:
for l in f.readlines():
player, rating, num_game, wins, losses = l.split()[0:5]
if player not in self.players:
print("player {} not exist!".format(player))
continue
self.players[player].rating = float(rating)
self.players[player].num_game = int(num_game)
self.players[player].wins = int(wins)
self.players[player].losses = int(losses)
def readRecords(self,filename):
'''
读取比赛记录
......@@ -213,6 +226,17 @@ class EloRatingSystem:
return p.rating
players.sort(key=sortKey,reverse=True)
return players
def getPlayersWithLessGames(self,sortByRank=False, maxgame=100000):
players = []
for p in self.players.values():
if p.num_game < maxgame:
players.append(p)
if sortByRank:
def sortKey(p):
return p.rating
players.sort(key=sortKey,reverse=True)
return players
def getRating(self):
#获取分数,按模型输入顺序排,用来画图
......
File added
num_eval_threads: 1
num_search_threads: 128
max_children_per_node: 16
max_search_tree_size: 400000000
timeout_ms_per_step: 5000
max_simulations_per_step: 400 # rolluot
# clear_search_tree_per_move: 1 # clear moves
eval_batch_size: 128
eval_wait_batch_timeout_us: 100
model_config {
model_type: Offline # Offline
device_type: "mlu" # "cpu", "gpu", "mlu"
mlu_core: "MLU270" # "MLU100", "1H16", "1H8", "MLU220", "MLU270"
mlu_option: 2 # 0: cpu, 1: mlu, 2: mfus(mlu with fusion);
mlu_caffemodel_path: "/share/go9_data/caffemodel/best_models_6b/agz9_6b_int8_best.caffemodel"
mlu_caffedeploy_path: "/share/go9_data/caffemodel/best_models_6b/agz9_6b_int8_best_mlu.prototxt"
core_number: 16
output_dtype: "FLOAT32"
mlu_offline_model_path: "/share/go9_data/caffemodel/best_models/agz9_best.cambricon"
subnet_name: "subnet0"
}
mlu_list: "0"
c_puct: 1.5
virtual_loss: 1.0
enable_resign: 1
v_resign: -0.9
enable_dirichlet_noise: 0
dirichlet_noise_alpha: 0.03
dirichlet_noise_ratio: 0.25
monitor_log_every_ms: 0
get_best_move_mode: 0
enable_background_search: 0
enable_policy_temperature: 0
policy_temperature: 0.67
inherit_default_act: 1
early_stop {
enable: 1
check_every_ms: 100
sims_factor: 1.0
sims_threshold: 2000
}
unstable_overtime {
enable: 1
time_factor: 0.3
}
behind_overtime {
enable: 1
act_threshold: 0.0
time_factor: 0.3
}
time_control {
enable: 1
c_denom: 20
c_maxply: 40
reserved_time: 1.0
}
genmove_temperature: 1.0
soft_pick_move: 10
disable_resign_percentage: 1.0
figure.png

24.9 KB

import os
step_delta = 1
models_file = "../models.txt"
routines = ["R1600_M1600", "R400_M1600", "R400_M400", "R1600_M400", "R1600_M100", "R400_M100"]
# routines = ["R400_M100"]
# pwd = "/share/go9_data/routines/R1600_M1600/test1/caffemodel/received_9b/"
# prefix = "R1600_M1600_"
def getModels(pwd, prefix):
models = []
with open(pwd + "time_record", 'r') as f:
lines = f.readlines()
for l in lines:
l = l.strip().split(':')[0]
if "cambricon" in l:
step_iter = int(l.split('.')[0].split('_')[-1])
if step_iter % step_delta == 0:
m_name = prefix + str(1 + step_iter)
os.system("ln -s %s %s" %(pwd + l, m_name))
models.append(m_name)
with open(models_file, 'a+') as f:
for m in models:
f.write(m + "\n")
def getPwd(routine):
pwd = "/share/go9_data/routines/" + routine + "/test1/caffemodel/best_models_9b/"
prefix = routine + "_"
return pwd, prefix
if __name__ == "__main__":
for routine in routines:
pwd, prefix = getPwd(routine)
getModels(pwd, prefix)
import os
step_delta = 10000
step_delta = 1000
models_file = "../models.txt"
routines = ["R1600_M1600", "R400_M1600", "R400_M400", "R1600_M400", "R1600_M100"]
link_prefix = './'
model_max_iter = 150000
routines = []
runing = ['group4']
# pwd = "/share/go9_data/routines/R1600_M1600/test1/caffemodel/received_9b/"
# prefix = "R1600_M1600_"
def getModels(pwd, prefix):
def getModels(pwd, prefix, models_file = models_file, step_delta = step_delta,model_max_iter = model_max_iter, link_prefix = link_prefix, model_start = 0):
models_map = {}
models = []
with open(pwd + "time_record", 'r') as f:
lines = f.readlines()
......@@ -13,15 +17,32 @@ def getModels(pwd, prefix):
l = l.strip().split(':')[0]
if "cambricon" in l:
step_iter = int(l.split('.')[0].split('_')[-1])
if step_iter % step_delta == 0:
m_name = prefix + str(step_iter)
os.system("ln -s %s %s" %(pwd + l, m_name))
if (model_start + step_iter) % step_delta == 0 and (model_start + step_iter) < model_max_iter:
m_name = prefix + str(model_start + step_iter)
os.system("ln -s %s %s" %(pwd + l, link_prefix + m_name))
models.append(m_name)
models_map[m_name] = l
with open(models_file, 'a+') as f:
for m in models:
f.write(m + "\n")
return models_map
def getRuningModels(model_dir = '/share/go9_data/caffemodel/received/', suffix='.cambricon', model_prefix = runing[0] + '_',models_file = models_file,step_delta = step_delta, model_max_iter = model_max_iter, link_prefix = link_prefix, model_start=0):
models = []
for f in os.listdir(model_dir):
if f.endswith(suffix):
step_iter = int(f.split('.')[0].split('_')[-1])
if step_iter % step_delta == 0 and step_iter < model_max_iter:
m_name = model_prefix + str(model_start + step_iter)
file_path = model_dir + f
os.system("ln -s {} {}".format(file_path, link_prefix + m_name))
models.append(m_name)
with open(models_file, 'a+') as f:
for m in models:
f.write(m + '\n')
def getPwd(routine):
pwd = "/share/go9_data/routines/" + routine + "/test1/caffemodel/received_9b/"
pwd = "/share/routines/" + routine + "/caffemodel/received/"
prefix = routine + "_"
return pwd, prefix
......@@ -29,8 +50,11 @@ if __name__ == "__main__":
for routine in routines:
pwd, prefix = getPwd(routine)
getModels(pwd, prefix)
# getRuningModels('/share/go9_data/caffemodel/received/', '.cambricon', 'R400_M360_')
# getRuningModels('/share-2/go9_data/caffemodel/received/', '.cambricon', 'DR_R400_M360_')
# getRuningModels('/share-3/go9_data/caffemodel/received/', '.cambricon', 'DR_R400_M720_')
# getRuningModels('/share/go9_data/caffemodel/received/', '.cambricon', 'share1_')
# getRuningModels('/share-2/go9_data/caffemodel/received/', '.cambricon', 'share2_')
# getRuningModels('/share-3/go9_data/caffemodel/received/', '.cambricon', 'share3_')
getRuningModels('/share-4/go9_data/caffemodel/received/', '.cambricon', 'share4_')
# getRuningModels('/share-4/go9_data/caffemodel/received/', '.cambricon', 'share4_')
File added
import os
import sys
def getBestModelMap(test_dir):
best_models = []
models = [0]
with open(test_dir + 'run/eval_results/baseline_eval.csv', 'r') as f:
for line in f.readlines():
ls = line.split(',')
best_model_iter = int(ls[0])
model_iter = int(ls[1])
best_models.append(best_model_iter)
models.append(model_iter)
best_model_map = {}
for i, model in enumerate(models):
if i < len(best_models):
best_model_map[model] = best_models[i]
cur_best = 0
for model in range(0, 160000, 1000):
if model not in best_model_map:
best_model_map[model] = cur_best
else:
cur_best = best_model_map[model]
return best_model_map
def getConfigMap(test_dir):
config_map = {}
best_model_map = getBestModelMap(test_dir)
with open(test_dir + 'run/config/result_act.txt', 'r') as f:
for i, line in enumerate(f.readlines()):
new_win_rate = float(line.split(',')[0].split(':')[-1])
best_model = line.split(',')[1].split(':')[1].replace('./','')
base_r = line.split('[')[1].split(']')[0].split(',')
best_model_iter = int(best_model.split('.')[0].split('_')[-1])
base_r = [int(r) for r in base_r]
config_map[best_model_iter] = base_r
# if new_win_rate > 0.53:
# print(i, new_win_rate)
# print(new_win_rate, base_r)
for model in best_model_map:
best_model_iter = best_model_map[model]
if best_model_iter in config_map:
best_model_map[model] = config_map[best_model_iter]
else:
best_model_map[model] = config_map[best_model_iter+1]
return best_model_map
def getRolloutMap(test_dir, m_name):
config_map = getConfigMap('/share/routines/' + test_dir + '/')
model_config_map = {}
for model in config_map:
model_config_map[m_name + str(model)] = config_map[model]
return model_config_map
if __name__ == '__main__':
tests = sys.argv[1:]
config_map = getConfigMap('/share/routines/' + tests[0].split(':')[0] + '/')
# config_map = getConfigMap(tests[0].split(':')[0] + '/')
m_name = tests[0].split(':')[1] + '_'
model_config_map = {}
for model in config_map:
model_config_map[m_name + str(model)] = config_map[model]
#print(model_config_map)
#!/usr/bin/python
import os
test_ids = [0, 1]
os.system("rm -f models.txt")
for test_id in test_ids:
model_prefix = "/share/backup_data/go9/test_%d/off_models/go9_iter_"%(test_id)
model_suffix = ".cambricon"
i = 0
delta = 10000
while True:
model_path = "%s%d%s"%(model_prefix, i, model_suffix)
if not os.path.exists(model_path):
break
with open("models.txt", 'a') as f:
f.write("%s\n"%(model_path))
i += delta
rsync version 3.1.1 protocol version 31
Copyright (C) 1996-2014 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, prealloc
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.
Usage: rsync [OPTION]... SRC [SRC]... DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or rsync [OPTION]... [USER@]HOST:SRC [DEST]
or rsync [OPTION]... [USER@]HOST::SRC [DEST]
or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.
Options
-v, --verbose increase verbosity
--info=FLAGS fine-grained informational verbosity
--debug=FLAGS fine-grained debug verbosity
--msgs2stderr special output handling for debugging
-q, --quiet suppress non-error messages
--no-motd suppress daemon-mode MOTD (see manpage caveat)
-c, --checksum skip based on checksum, not mod-time & size
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
-R, --relative use relative path names
--no-implied-dirs don't send implied dirs with --relative
-b, --backup make backups (see --suffix & --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
--suffix=SUFFIX set backup suffix (default ~ w/o --backup-dir)
-u, --update skip files that are newer on the receiver
--inplace update destination files in-place (SEE MAN PAGE)
--append append data onto shorter files
--append-verify like --append, but with old data in file checksum
-d, --dirs transfer directories without recursing
-l, --links copy symlinks as symlinks
-L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the source tree
--munge-links munge symlinks to make them safer (but unusable)
-k, --copy-dirlinks transform symlink to a dir into referent dir
-K, --keep-dirlinks treat symlinked dir on receiver as dir
-H, --hard-links preserve hard links
-p, --perms preserve permissions
-E, --executability preserve the file's executability
--chmod=CHMOD affect file and/or directory permissions
-A, --acls preserve ACLs (implies --perms)
-X, --xattrs preserve extended attributes
-o, --owner preserve owner (super-user only)
-g, --group preserve group
--devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
-t, --times preserve modification times
-O, --omit-dir-times omit directories from --times
-J, --omit-link-times omit symlinks from --times
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
--preallocate allocate dest files before writing them
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (without delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-B, --block-size=SIZE force a fixed checksum block-size
-e, --rsh=COMMAND specify the remote shell to use
--rsync-path=PROGRAM specify the rsync to run on the remote machine
--existing skip creating new files on receiver
--ignore-existing skip updating files that already exist on receiver
--remove-source-files sender removes synchronized files (non-dirs)
--del an alias for --delete-during
--delete delete extraneous files from destination dirs
--delete-before receiver deletes before transfer, not during
--delete-during receiver deletes during the transfer
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not during
--delete-excluded also delete excluded files from destination dirs
--ignore-missing-args ignore missing source args without error
--delete-missing-args delete missing source args from destination
--ignore-errors delete even if there are I/O errors
--force force deletion of directories even if not empty
--max-delete=NUM don't delete more than NUM files
--max-size=SIZE don't transfer any file larger than SIZE
--min-size=SIZE don't transfer any file smaller than SIZE
--partial keep partially transferred files
--partial-dir=DIR put a partially transferred file into DIR
--delay-updates put all updated files into place at transfer's end
-m, --prune-empty-dirs prune empty directory chains from the file-list
--numeric-ids don't map uid/gid values by user/group name
--usermap=STRING custom username mapping
--groupmap=STRING custom groupname mapping
--chown=USER:GROUP simple username/groupname mapping
--timeout=SECONDS set I/O timeout in seconds
--contimeout=SECONDS set daemon connection timeout in seconds
-I, --ignore-times don't skip files that match in size and mod-time
-M, --remote-option=OPTION send OPTION to the remote side only
--size-only skip files that match in size
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
--compare-dest=DIR also compare destination files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level
--skip-compress=LIST skip compressing files with a suffix in LIST
-C, --cvs-exclude auto-ignore files the same way CVS does
-f, --filter=RULE add a file-filtering RULE
-F same as --filter='dir-merge /.rsync-filter'
repeated: --filter='- .rsync-filter'
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *-from/filter files are delimited by 0s
-s, --protect-args no space-splitting; only wildcard special-chars
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
--blocking-io use blocking I/O for the remote shell
--stats give some file-transfer stats
-8, --8-bit-output leave high-bit chars unescaped in output
-h, --human-readable output numbers in a human-readable format
--progress show progress during transfer
-P same as --partial --progress
-i, --itemize-changes output a change-summary for all updates
--out-format=FORMAT output updates using the specified FORMAT
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
--password-file=FILE read daemon-access password from FILE
--list-only list the files instead of copying them
--bwlimit=RATE limit socket I/O bandwidth
--outbuf=N|L|B set output buffering to None, Line, or Block
--write-batch=FILE write a batched update to FILE
--only-write-batch=FILE like --write-batch but w/o updating destination
--read-batch=FILE read a batched update from FILE
--protocol=NUM force an older protocol version to be used
--iconv=CONVERT_SPEC request charset conversion of filenames
--checksum-seed=NUM set block/file checksum seed (advanced)
--noatime do not alter atime when opening source files
-4, --ipv4 prefer IPv4
-6, --ipv6 prefer IPv6
--version print version number
(-h) --help show this help (-h is --help only if used alone)
Use "rsync --daemon --help" to see the daemon-mode command-line options.
Please see the rsync(1) and rsyncd.conf(5) man pages for full documentation.
See http://rsync.samba.org/ for updates, bug reports, and answers
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
\ No newline at end of file
/share/backup_data/go9/test_0/off_models/go9_iter_0.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_10000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_20000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_30000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_40000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_50000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_60000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_70000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_80000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_90000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_100000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_110000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_120000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_130000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_140000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_150000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_160000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_170000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_180000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_190000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_200000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_210000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_220000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_230000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_240000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_250000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_260000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_270000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_280000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_290000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_300000.cambricon
/share/backup_data/go9/test_0/off_models/go9_iter_310000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_0.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_10000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_20000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_30000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_40000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_50000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_60000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_70000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_80000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_90000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_100000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_110000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_120000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_130000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_140000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_150000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_160000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_170000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_180000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_190000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_200000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_210000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_220000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_230000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_240000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_250000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_260000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_270000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_280000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_290000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_300000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_310000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_320000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_330000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_340000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_350000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_360000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_370000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_380000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_390000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_400000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_410000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_420000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_430000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_440000.cambricon
/share/backup_data/go9/test_1/off_models/go9_iter_450000.cambricon
/share-4/go9_data/caffemodel/received/agz9_iter_0.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_10000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_12000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_14000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_16000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_18000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_2000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_20000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_22000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_24000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_26000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_28000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_30000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_32000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_34000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_36000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_38000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_4000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_40000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_42000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_44000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_46000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_48000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_50000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_52000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_54000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_56000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_58000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_6000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_60000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_62000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_64000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_66000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_68000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_70000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_72000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_74000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_76000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_78000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_8000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_80000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_82000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_84000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_86000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_88000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_90000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_92000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_94000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_96000.cambricon
\ No newline at end of file
/share-4/go9_data/caffemodel/received/agz9_iter_98000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_0.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_10000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_12000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_14000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_16000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_18000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_2000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_20000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_22000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_24000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_26000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_28000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_30000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_32000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_34000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_36000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_38000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_4000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_40000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_42000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_44000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_46000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_48000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_50000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_52000.cambricon
\ No newline at end of file
/share/routines/test74/caffemodel/received/agz9_iter_54000.cambricon
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment