سلام
بله باید بجای 10 تعداد 60 هزار رو قرار بدید که همون اندازه training set شما هست .
در مورد خوندن لیبل ها هم معمولا لیبل ها را بصورت فایل متنی همراه دیتاست ارائه میکنن. البته بعضی ها هم ممکنه عکس و لیبل رو با هم در یک فایل باینری ذخیره کرده باشن که در هر صورت اطلاعات لیبل ها و اینکه چطوری باید خونده بشن تو همون جایی که دیتاست رو برای دانلود قرار میدن میگن .
بگذریم . در مورد خوندن لیبل ها هم بله شما باید یک آرایه 60 هزار در ده درست کنید که لیبل مربوط به هر عکس مشخص باشه
در حالت عادی گفته بودیم که لیبل ها رو بصورت زیر مشخص میکنن معمولا
pic1.jpg 1
pic2.jpg 3
pic3.jpg 0
pic4.kpg 8
....
ولی ما برای دسته بندی میاییم اصطلاحا هر لیبل رو به یک one hot encoded vector تبدیل میکنیم . یعنی یک بردار از 0 و 1 که به تعداد کلاس ما عضو داره .و هرجایی که شماره لیبل ما هست 1 و بقیه خونه ها صفر میشه . با یک مثال میشه بهتر فهمید
مثلا برای اولین تصویر و لیبل اون ما بردار زیر رو داریم . یک بردار که 10 تا خونه داره (0 تا 9 )
خط اول کلاسهای ماس و خطهای بعدی بردارهای تبدیل شده ماس که نگاه بکنید میبینید هرجایی که اندیس بردار برابر با کلاس ما هست 1 و بقیه جاها صفر استفاده کردیم . به این میگن one hot verctor :
0 1 2 3 4 5 6 7 8 9
0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
...
و به همین صورت الی اخر
اون یک خطی که در تنسورفلو هست خودش خودکار اون تبدیل به one hot vector رو انجام میده (اگه شما one_hot=False
قرار بدید میبینید که لیباهای شما همه بصورت معمولی هستن و فقط با true کردن اون ارگومانه که شما بردار به ازای هر لیبل بدست میارید .
بعد از این مرحله براحتی میتونید از کدهای تنسورفلو برای مثال mnist استفاده کنید و هیچ فرقی نمیکنه . تنها کار اضافه شما وقتی دیتاستتون عوض میشه در اصل بازنویسی همون متد input_data.read_data_sets()
هست . یعنی داده ها رو بخونید تو یه آرایه و لیبل هاتون هم بصورت One hot vector تو یه ارایه دیگه بعدش دیگه هیچ فرقی با مثالهایی که در تنسورفلو میبینید نداره .