跟我這樣做:
定義訓練引數
定義需要用到的變數、列表等
遍歷每一類別的,並記錄每一類別的數量和總數量
將遍歷的路徑、對應的類別儲存到第二步定義的列表中
亂序後將相關資訊儲存到json檔案
let』s do it!
import os
import random
train_parameters =
,# 標籤資訊
'class_dim':0
,# 類別個數
"train_list_path"
:"/home/data/train.txt"
,#train.txt路徑
"eval_list_path"
:"/home/data/eval.txt"
,#eval.txt路徑
"readme_path"
:"/home/data/readme.json"
,#readme.json路徑
}def
get_data_list
(datapath, train_list_path, eval_list_path)
: class_infor =
# 存放所有類別,如:dog, cat, car……
class_label =
0# 標記類別標籤
class_num =
0# 每一類多少張
class_dim =
0# 一共多少類
all_class_images =
0# 總的數量
data_list_path = datapath +
"dataname/"
# 資料位址
class_dirs = os.listdir(data_list_path)
# 讀取類別目錄名稱
trainer_list =
# 用於儲存訓練的檔案位址,之後轉成txt
eval_list =
# 用於推理訓練的檔案位址,之後轉成txt
for class_dir in class_dirs:
# 遍歷目標位址下的所有目錄檔案,乙個目錄乙個類別
class_dim +=
1# 統計一共多少個資料夾,就是多少個類
class_detail_list =
# 建立乙個儲存類別相關資訊的字典,比如類別名稱以及對應的標籤等
eval_sum =
0 trainer_sum =
0 path = data_list_path + class_dir # 某一類對應資料夾的路徑
img_paths = os.listdir(path)
# 某一類資料夾裡的名稱
for img_path in img_paths:
# 遍歷某一類檔案裡的每一張
name_path = path +
'/'+ img_path # 每張的路徑
if class_num %
10==0:
# 每10張取乙個做驗證資料
eval_sum +=
1'\t%d'
% class_label +
'\n'
)else
: trainer_sum +=
1'\t%d'
% class_label +
'\n'
) class_num +=
1# 遍歷一張,統計該類的有多上張的變數增1
all_class_images +=
1# 遍歷完一類後,將該類的相關資訊儲存到字典中
# 說明的json檔案的class_detail資料
class_detail_list[
'class_name'
]= class_dir #類別名稱,如jiangwen
class_detail_list[
'class_label'
]= class_label #類別標籤
class_detail_list[
'class_eval_images'
]= eval_sum #該類資料的測試集數目
class_detail_list[
'class_trainer_images'
]= trainer_sum #該類資料的訓練集數目
#初始化標籤列表
train_parameters[
'label_dict'][
str(class_label)
]= class_dir
class_label +=
1# 遍歷完乙個資料夾後,對應類別標籤加1
#初始化分類數
train_parameters[
'class_dim'
]= class_dim
# 打亂檔案順序
random.shuffle(eval_list)
# 將打亂後的檔案位址寫入txt檔案儲存
with
open
(eval_list_path,
'a')
as f:
for path in eval_list:
f.write(path)
random.shuffle(trainer_list)
with
open
(train_list_path,
'a')
as f:
for path in eval_list:
f.write(path)
# 說明的json檔案資訊
readjson =
readjson[
'all_class_name'
]= data_list_path #檔案父目錄
readjson[
'all_class_images'
]= all_class_images
readjson[
'class_detail'
]= class_detail
jsons = json.dumps(readjson, sort_keys=
true
, indent=
4, separators=
(','
,': '))
with
open
(train_parameters[
'readme_path'],
'w')
as f:
f.write(jsons)
print
('生成資料列表完成!'
)
python 快速生成數字,字母列表
1.快速生成1,2,3,100數字列表 print i for i in range 1,101 2.快速生成001,002,003,100數字列表 print f for i in range 1,101 或者不用f string print 03d i for i in range 1,101 ...
TPC DS 生成資料
其實,使用 tpc ds 生成系統效能測試的資料,說簡單也簡單,說難,確實也不好做!關鍵是在每一步的操作中,如果遇到了問題,該怎麼樣處理,這個是個問題的關鍵。下面就將生成的步驟簡單描述一下,好記性不如爛筆頭呀!通過以上六步驟,就可以將 tpc ds 資料全部 load 到對應的表中去,也就生成了相應...
Matlab生成資料
有四種基本隨機數函式 rand randi randn 和 randperm。rand 函式返回在 0 和 1 之間均勻分布的實數。例如,r1 rand 1000,1 r1 是乙個含有均勻分布浮點實數的 1000 x 1 的列向量。r1 中的所有值均處於開區間 0,1 內。這些值的直方圖大致上是扁平...