*Իհարկե, զուտ մեքենայական ուսուցում սովորելու համար: Սիրած կնոջ փոքր-ինչ դժգոհ հայացքի ներքո.
Հավանաբար չկա ողնաշարի ռեֆլեքսների մակարդակի նման պարզ ծրագիր, ինչպես Tinder-ը: Այն օգտագործելու համար ձեզ հարկավոր է ընդամենը մեկ մատ՝ սահեցնելու համար և մի քանի նեյրոն՝ ընտրելու այն աղջիկներին կամ տղամարդկանց, որոնք ձեզ ավելի շատ են դուր գալիս: Կոպիտ ուժի իդեալական իրականացում զույգերի ընտրության մեջ:
Ես որոշեցի, որ սա լավ միջոց է նոր գրաֆիկական քարտի վրա մեքենայական ուսուցման մասին մի փոքր զգացողություն ստանալու համար: Մնում է կնոջս բացատրել, որ ինձ ավելի գեր կին պետք չէ, և ես պարզապես նեյրոնային ցանցեր եմ վարժեցնում:
Ո՞րն է ծանոթությունների ցանցերի խնդիրը:
Նման ռեսուրս կար՝ Էշլի Մեդիսոն: Կոնկրետ՝ «Կյանքը կարճ է. Սիրավեպ ունեցեք»։ Հիմնական լսարանը ամուսնացած տղամարդիկ են, ովքեր կողքից սիրավեպ են փնտրում: Դրամայնացումը նաև զվարճալի է. ի լրումն ստանդարտ «միավորներ ծախսել հավանելու և գրելու համար», նրանք 19 դոլար են խնդրել օգտատիրոջ հաշիվն առանց հետքի ջնջելու համար:
2015 թվականին կայքը բնականաբար արտահոսեց և 60 ԳԲ անձնական տվյալներ արտահոսեցին հանրային տիրույթ: Բազմաթիվ ավերված ընտանիքներից բացի, այս արտահոսքը շատ հետաքրքիր տեղեկություններ է հաղորդել վերլուծաբաններին: Ես միշտ կասկածում էի, որ ծանոթությունների կայքերում տղամարդիկ շատ ավելի շատ են, բայց այս դեպքում բավականին հետաքրքիր ստացվեց։ Լրագրող Անալի Նյուից
Տղամարդկանց հաշիվների նկատմամբ նման գերակայությունը բնորոշ է ոչ միայն այս ռեսուրսին, այլև ծանոթությունների այլ կայքերի մեծամասնությանը: Համոզված եմ, որ շատերն են բախվել այս անկասկած անարդար իրավիճակին, երբ պետք է ուշադիր պլանավորել ծանոթությունը, բայց աղջիկը պարզապես պետք է գրանցվի։ Մի կողմ թողնենք երկրպագուների այս բազմության որակը, բայց փաստն անհերքելի է, որ առաջարկի և պահանջարկի հավասարակշռությունը ակնհայտորեն փոխվում է հօգուտ աղջիկների։
Tinder հատկությունը
Իդեալական բիրտ ուժը գենդերային հարաբերություններում
Այս հարթակի հիմնական առանձնահատկությունը ծանոթի համար ցածր արժեքն է: Երկու սայթաքման համընկնումը բավական է, և դուք արդեն շփվում եք պոտենցիալ հետաքրքիր մարդու հետ: Խնդիրն այն է, որ նույն գենդերային անհավասարակշռությունը հանգեցնում է նրան, որ աղջիկների մեծամասնությունը օրական տասնյակ համընկնումներ է ունենալու: Սա նշանակում է, որ նրանք, ամենայն հավանականությամբ, ժամանակ չեն ունենա այլ թեկնածուների թվում ձեզ ուշադրություն դարձնելու համար:
Միանգամայն պարզ է, որ հարթակը քիչ հնարավորություն է ենթադրում գնահատելու մարդու խորը ներաշխարհը լողազգեստով լուսանկարին կամ մոդայիկ մգեցված մեքենա վարելուց մեկուկես վայրկյան հայացքից։ Հետևաբար, եթե ձեր լուսանկարներում պարզապես աստվածային տեսք չունեք, այլ ելք չունեք, քան մեծացնել ձեր հնարավորությունները՝ ընդունելով.
Տվյալների հավաքում
Նախևառաջ, նորմալ ճշգրտության համար անհրաժեշտ է շատ տվյալներ: Յուրաքանչյուր ոք, ով հանդիպել է մեքենայական ուսուցման, գիտի, թե որքան դժվար կարող է լինել ճիշտ հավաքագրված և պիտակավորված տվյալների բազա ստեղծելը: Տեսականորեն ցանկացած նմանատիպ ռեսուրս հարմար կլինի որպես տվյալների աղբյուր՝ լինի դա Instagram, թե այլ սոցիալական ցանցեր։ Բայց ավելի լավ է մարզվել այն նմուշների վրա, որոնց վրա ցանցը կաշխատի ապագայում:
Հիմք ընդունենք շտեմարանը
from skimage.io import imread, imsave, imshow, show
import matplotlib.pyplot as plt
import pynder
from helpers import get_access_token, get_login_credentials
from io_helper import save_image
email, password, FBID = get_login_credentials()
FBTOKEN = get_access_token(email, password)
session = pynder.Session(facebook_token=FBTOKEN)
while True:
users = session.nearby_users()
for user in users:
photos = user.get_photos()
print("Fetched user photos..")
for photo in photos:
print(photo)
image = imread(photo)
imshow(image)
show()
input_string = "Write 1 to like. Write 2 to dislike."
ans = str(input(input_string)).lower()
if ans == "1":
save_image(image, photo, True)
else:
save_image(image, photo, False)
Այն թույլ կտա հնարավորինս արագ նշել տվյալների հավաքածուն ընդամենը երկու կոճակով: Հիմնական որոգայթը կայանում է նրանում, որ werkzeug գրադարանը խախտել է հետամնաց համատեղելիությունը և ստիպված կլինի այն իջեցնել: Հակառակ դեպքում այն նետում է այս սխալը:
Traceback (most recent call last):
File "img_scrape.py", line 4, in <module>
from helpers import get_access_token, get_login_credentials
File "/home/someone/tmp/TinderAutomation/helpers.py", line 1, in <module>
import robobrowser
File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/__init__.py", line 3, in <module>
from .browser import RoboBrowser
File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/browser.py", line 8, in <module>
from werkzeug import cached_property
ImportError: cannot import name 'cached_property'
Հետևաբար, requirements.txt-ում պետք է գրել Werkzeug==0.16.1: Հետո այն կթռչի:
Երկրորդ խնդիրը հենց այս նշանը ստանալն է: Պահեստից ստացված ստանդարտ մեթոդն ինձ մոտ չաշխատեց, բայց ինձ հաջողվեց այն ստանալ մշակողի վահանակից: Դա անելու համար գնացեք
Տվյալների հավաքածուի պահանջներ
Մեքենայի ուսուցման տվյալների հավաքածուների համար կան մի քանի հիմնական պահանջներ.
- Համարժեքություն
- Միատեսակություն
- Բազմազանություն
Բավարարությունն այս դեպքում պահանջում է առնվազն 10000 լուսանկար՝ համապատասխան մոդել ստեղծելու համար: Այո, դա շատ է: Ահա թե ինչու են նման ծառայությունները
Բազմազանության հետ կապված առանձնահատուկ խնդիրներ չկան, բոլոր լուսանկարները ներկայացված են տարբեր անկյուններից և լուսավորությունից: Ակնոցներով, զգեստներով, լողազգեստներով և դահուկային կոստյումներով։ Խնդիր կարող է առաջանալ տվյալների հավաքածուի միատեսակության հետ: Իդեալում, երբ մենք պիտակավորում ենք մեր նմուշը, այն պետք է բաղկացած լինի մոտավորապես հավասար մասերից: Եթե դուք հայտնվում եք «շեղված» տվյալների բազայով, դուք ստիպված կլինեք այն նոսրացնել այլ աղբյուրների լուսանկարներով: Դուք պետք է ավելացնեք ավելի գրավիչ, կամ հակառակը, դուք կորոշեք դրանք նշագրման արդյունքի հիման վրա: Ես ստացել եմ մոտ 60% գեղեցիկ բան: Կամ ես շատ բծախնդիր չեմ, կամ պարզապես բախտավոր եմ, և շրջապատում կան շատ գեղեցիկ աղջիկներ:
Չեմ զեղչում նաև այն վարկածը, որ դրանց մեջ շատ բոտեր կան։ Մենք մարզում ենք բոտ, որը դուր կգա մյուս բոտերին: Սրա մեջ որոշակի հեգնանք կա.
Տվյալների մշակում
Մենք ունենք պիտակավորված լուսանկարների փունջ, բայց դրանք շատ խառն են: Ցերեկը, գիշերը, հետևից և այլն: Ափսոսանքով հասկանում եմ, որ հակադարձ անկյան տակ լուսանկարներից դասավանդելը առանձնապես արդյունավետ չի լինի, քանի որ նմուշը կլինի շատ անհավասար: Հետևաբար, լավագույն տարբերակը կլինի դեմքերը օգտագործել որպես «սիրունության» նշան։ Այնուամենայնիվ, մեզ համար, ինչպես մյուս պրիմատների համար, սա հիմնական պարամետր է:
Հետեւաբար, եկեք օգտագործենք
Սա ավելի մանրամասն նկարագրված է ձեռնարկում
Հաջորդ փուլում, երբ նմուշում միայն դեմքերն են, իմաստ ունի հեռացնել գույնը: Իրականում, դուք դժվար թե ստիպված լինեք ընտրություն կատարել Պանդորայի գեղեցիկ կապույտ դենիզի կամ կանաչ մաշկ ունեցող գեղեցկուհու միջև:
Hue-ի մարդկանց մոտ մաշկի գույնը էական ներդրում չունի գրավչության վարկանիշի վրա:
Ուստի արժե պարզեցնել նեյրոնային ցանցի աշխատանքը և թողնել միայն գորշ գույնը։
Մոդելային շենք
Ես ուզում եմ անմիջապես ասել, որ առանց լավ վիդեո քարտի և CUDA-ի, դուք, ամենայն հավանականությամբ, պարզապես համապատասխան ժամանակում չեք ստանա պատրաստված մոդել: Հետևաբար, անմիջապես նպատակադրեք հաշվարկներ կատարել մասնագիտացված ամպերում կամ օգտագործելով python-CUDA:
Ես վերցրեցի հիմնական եռաշերտ օրինակը պահեստի հեղինակից և, զարմանալիորեն, այն ցույց տվեց մոտ 72% ճշգրտություն, ինչը բավականին լավ արդյունք է:
model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(img_size, img_size, 3)))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Convolution2D(32, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
adam = optimizers.SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer= adam,
metrics=['accuracy'])
Եթե կա լավ նմուշ, ապա դա կարող է բավարար լինել գործունակ մոդել ձեռք բերելու համար:
Եկեք գործարկենք բոտը
Շնորհակալություն պահեստի հեղինակին գաղափարի արագ փորձարկման պատրաստ տարբերակի համար։ Իրականում, այն բավականին լավ է աշխատում հիմնական տարբերակում և, սկզբունքորեն, կարող է գործարկվել մեր վրա
Արդյունքները
Կարծում եմ, որ ես շատ սրամիտ եմ: Իսկ ես հարուստ ներաշխարհ ունեմ։ Մեկ ժամվա ընթացքում 13 լուցկի ստացա: Ընդ որում, մի քանի անգամ աղջիկներն առաջինը գրել են.
Արդյունքում, մենք ավարտեցինք շատ գեղեցիկ երկխոսություններ, որտեղ ես ասացի, որ ես եկել եմ բացառապես մեքենայական ուսուցման և տվյալների պիտակավորման հետ խաղալու համար: Աղջիկներից մեկը չափազանց հետաքրքրված էր, քանի որ ինքը ծրագրավորող է։ Ուժեղ զգացում կա, որ նա ի վերջո կկարդա այս գրառումը Habré-ում: Ես իսկապես հուսով եմ, որ Օքսանան կպահպանի իմ անանունությունը: 🙂
*թաթը թափահարում է և ասում՝ բարև
Մի փոքր հարցի էթիկական կողմի մասին
Անկեղծ ասած, ինձ դուր չի գալիս տղամարդկանց և աղջիկների միջև հարաբերությունները ռոբոտացնելու ամբողջ գաղափարը: Շատ ճիշտ բան կա, երբ բաճկոնդ մենակ կանգնած սառը անծանոթի ուսերին գցես: Կամ մոտեցեք մի գեղեցիկ աղջկա ամառային սրճարանում և միասին սուրճ խմեք: Դուրս եկեք արդեն մոնիտորների հետևից։
Ամառը շուրջբոլորն է: Ժամանակն է ծանոթանալու։
Source: www.habr.com