1、sorted 排序
sorted_data = sorted(data.items(), key=lambda data: int(data[1]['input'][0]['shape'][0]), reverse=True)
lambda函數(shù)也叫匿名函數(shù),即,函數(shù)沒有具體的名稱。
冒號前是參數(shù),可以有多個,用逗號隔開,冒號右邊的返回值。
此時用在排序功能上,可以根據(jù)data中的輸入shape[0]的值從大到?。╮everse=True表示降序,默認False表示升序),對data中的元組進行重新排序。

data其中兩條

data.item()其中兩條

sorted_data結(jié)果
2、統(tǒng)計文件夾下.jpg數(shù)量
[os.path.join(train_images_path, image_name)
for image_name in os.listdir(train_images_path)
if image_name.endswith('.jpg')]
os.path.join將路徑與文件名合并一起;其中image_name在后面的for語句中遍歷,os.listdir顯示路徑下所有文件名;最后由if語句判斷image_name.endswith后綴是否為.jpg

顯示結(jié)果
使用len()即可統(tǒng)計數(shù)量
image_count = len([os.path.join(train_images_path, image_name)
for image_name in os.listdir(train_images_path)
if image_name.endswith('.jpg')])
3、按照文件名進行排序
image_dir = "images/"
image_type = 'jpg'
files = []
for image_name in os.listdir(image_dir):
if image_name.endswith('.{}'.format(image_type)) \
and not image_name.startswith('.'):
files.append(os.path.join(image_dir, image_name))
x = sorted(files)
print(x)

顯示結(jié)果
4、將前面85%的圖片和標簽作為訓練集,保存成txt文件
name = 'train'
eval_num = int(image_count * 0.15)
images = images[:-eval_num]
labels = labels[:-eval_num]
with open('./{}.txt'.format(name), 'w') as f:
for i in range(len(images)):
f.write('{}\t{}\n'.format(images[i], labels[i]))
[:-eval_num]表示從倒數(shù)eval_num位置往前所有;‘{}’.format(x)表示{}為x的格式化表示;\t表示tab跳格;\n表示回車換行;images和labels均為按照文件名排序后得到的結(jié)果。

train.txt
5、讀入文件內(nèi)容,將每行的內(nèi)容分割,并跳過\t
with open('./train.txt', 'r') as f:
for line in f.readlines():
print(line.strip().split('\t'))

顯示結(jié)果
6、斷言判斷語句assert,如果正確無輸出結(jié)果,錯誤則報告錯誤結(jié)果
mode = 'train1'
assert mode in ['train', 'test', 'predict'], \
"mode should be 'train' or 'test' or 'predict', but got {}".format(mode)

顯示結(jié)果