*Semata-mata untuk kepentingan pembelajaran Pembelajaran Mesin, sudah tentu. Di bawah pandangan isteri tercinta yang sedikit tidak puas hati.
Mungkin tiada aplikasi semudah tahap refleks tulang belakang seperti Tinder. Untuk menggunakannya, anda hanya memerlukan satu jari untuk meleret dan beberapa neuron untuk memilih gadis atau lelaki yang paling anda sukai. Pelaksanaan kekerasan yang ideal dalam pemilihan pasangan.
Saya memutuskan bahawa ini akan menjadi cara yang baik untuk merasakan sedikit pembelajaran mesin pada kad grafik baharu. Apa yang tinggal adalah untuk menjelaskan kepada isteri saya bahawa saya tidak memerlukan wanita baru yang lebih gemuk, dan saya hanya melatih rangkaian saraf.
Apakah masalah dengan rangkaian temu janji?
Terdapat sumber sedemikian - Ashley Madison. Khusus, dengan slogan βHidup ini singkat. Mempunyai hubungan sulit." Penonton utama adalah lelaki yang sudah berkahwin mencari hubungan sulit di sebelah. Pengewangan juga menyeronokkan - sebagai tambahan kepada standard "belanjakan mata untuk suka dan tulis", mereka meminta $19 untuk memadamkan akaun pengguna tanpa jejak.
Pada tahun 2015, tapak itu secara semula jadi bocor dan 60 GB data peribadi bocor ke domain awam. Selain banyak keluarga yang musnah, kebocoran ini memberikan banyak maklumat menarik kepada penganalisis. Saya selalu mengesyaki bahawa terdapat lebih ramai lelaki di laman temu janji, tetapi dalam kes ini ia ternyata agak menarik. Wartawan Annalee Newitz
Keutamaan sedemikian terhadap akaun lelaki adalah tipikal bukan sahaja untuk sumber ini, tetapi juga untuk kebanyakan tapak temu janji lain. Saya yakin bahawa ramai telah menghadapi situasi yang tidak diragukan lagi tidak adil ini, apabila anda perlu merancang kenalan dengan teliti, tetapi gadis itu hanya perlu mendaftar. Biarkan kualiti peminat yang ramai ini diketepikan, tetapi hakikatnya tidak dapat dinafikan bahawa keseimbangan bekalan dan permintaan jelas beralih memihak kepada gadis-gadis.
Ciri Tinder
Pengganas yang ideal dalam hubungan jantina
Ciri utama platform ini ialah kos rendah setiap kenalan. Kebetulan dua leretan sudah memadai dan anda sudah pun berkomunikasi dengan orang yang berpotensi menarik. Masalahnya ialah ketidakseimbangan jantina yang sama membawa kepada fakta bahawa kebanyakan gadis akan mempunyai berpuluh-puluh perlawanan setiap hari. Ini bermakna mereka berkemungkinan besar tidak mempunyai masa untuk memberi perhatian kepada anda di kalangan calon lain.
Agak jelas bahawa platform itu membayangkan sedikit peluang untuk menilai dunia dalaman seseorang dari pandangan satu setengah saat pada foto dalam pakaian renang atau memandu kereta berwarna bergaya. Oleh itu, jika anda tidak kelihatan seperti ilahi dalam gambar anda, anda tidak mempunyai pilihan selain meningkatkan peluang anda dengan menggunakan
Mengumpul data
Pertama sekali, anda memerlukan banyak data untuk ketepatan biasa. Sesiapa sahaja yang pernah mengalami pembelajaran mesin tahu betapa sukarnya untuk menghasilkan set data yang dikumpul dan dilabel dengan betul. Secara teorinya, mana-mana sumber yang serupa akan sesuai sebagai sumber data, sama ada Instagram atau rangkaian sosial lain. Tetapi yang terbaik adalah untuk melatih sampel tersebut di mana rangkaian akan berfungsi pada masa hadapan.
Mari kita ambil repositori sebagai asas
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)
Ia akan membolehkan anda menanda set data secepat mungkin dengan hanya dua butang. Perangkap utama terletak pada fakta bahawa perpustakaan werkzeug telah memecahkan keserasian ke belakang dan perlu dipaksa untuk menurunkan tarafnya. Jika tidak ia membuang ralat ini.
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'
Oleh itu, dalam requirements.txt anda perlu menulis Werkzeug==0.16.1. Kemudian ia akan berlepas.
Masalah kedua ialah untuk mendapatkan token ini. Kaedah standard dari repositori tidak berfungsi untuk saya, tetapi saya berjaya mendapatkannya dari konsol pembangun. Untuk melakukan ini, pergi ke
Keperluan set data
Terdapat beberapa keperluan utama untuk set data pembelajaran mesin:
- Kecukupan
- Keseragaman
- Pelbagai
Kecukupan dalam kes ini memerlukan sekurang-kurangnya 10000 gambar untuk membina model yang mencukupi. Ya, itu banyak. Inilah sebenarnya sebab perkhidmatan seperti
Tiada masalah khusus dengan kepelbagaian; semua gambar dipersembahkan dari pelbagai sudut dan pencahayaan. Dalam cermin mata, pakaian, pakaian renang dan pakaian ski. Masalah mungkin timbul dengan keseragaman set data. Sebaik-baiknya, apabila kami melabelkan sampel kami, ia harus terdiri daripada bahagian yang lebih kurang sama. Jika anda mempunyai set data yang "miring", anda perlu mencairkannya dengan gambar daripada sumber lain. Anda perlu menambah yang lebih menarik, atau sebaliknya, anda akan menentukannya berdasarkan hasil markup. Saya mendapat sesuatu sekitar 60% cantik. Sama ada saya tidak terlalu memilih, atau saya hanya bernasib baik dan terdapat ramai gadis cantik di sekeliling.
Saya juga tidak menolak hipotesis bahawa terdapat banyak bot di kalangan mereka. Kami melatih bot yang akan menyukai bot lain. Terdapat sedikit ironi dalam hal ini.
Pemprosesan data
Kami mempunyai sekumpulan foto yang ditandakan, tetapi ia sangat bercampur-campur. Siang, malam, dari belakang dan lain-lain. Dengan rasa kesal, saya faham bahawa pengajaran daripada gambar dari sudut terbalik tidak akan berkesan, kerana sampel akan menjadi sangat tidak sekata. Oleh itu, pilihan terbaik ialah menggunakan muka sebagai tanda rujukan "kecomelan." Namun, bagi kami, seperti untuk primata lain, ini adalah parameter utama.
Oleh itu, mari kita gunakan
Ini diterangkan dengan lebih terperinci dalam manual
Pada peringkat seterusnya, selepas hanya muka berada dalam sampel, masuk akal untuk mengeluarkan warna. Malah, anda tidak perlu memilih antara warna biru cantik Pandora atau kecantikan berkulit hijau.
Dalam orang Hue, warna kulit tidak memberikan sumbangan yang ketara kepada penilaian daya tarikan.
Oleh itu, adalah wajar memudahkan kerja rangkaian saraf dan meninggalkan hanya skala kelabu.
Bangunan model
Saya ingin segera mengatakan bahawa tanpa kad video dan CUDA yang bagus, kemungkinan besar anda tidak akan mendapat model terlatih dalam masa yang mencukupi. Oleh itu, segera sasarkan untuk pengiraan dalam awan khusus atau menggunakan python-CUDA.
Saya mengambil contoh asas tiga lapisan daripada pengarang repositori dan, secara mengejutkan, ia menunjukkan ketepatan sekitar 72%, yang merupakan hasil yang agak baik.
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'])
Sekiranya terdapat sampel yang baik, maka ia mungkin mencukupi untuk mendapatkan model yang boleh dilaksanakan.
Mari lancarkan bot
Terima kasih kepada pengarang repositori untuk pilihan siap sedia untuk menguji idea dengan cepat. Malah, ia berfungsi dengan baik dalam versi asas dan boleh, pada dasarnya, dilancarkan pada kami
Penemuan
Saya rasa saya sangat comel. Dan saya mempunyai dunia dalaman yang kaya. Saya mendapat kira-kira 13 perlawanan dalam masa sejam. Lebih-lebih lagi, beberapa kali gadis itu menulis dahulu.
Akibatnya, kami berakhir dengan dialog yang sangat bagus, di mana saya berkata bahawa saya datang semata-mata untuk bermain dengan pembelajaran mesin dan pelabelan data. Salah seorang gadis itu sangat berminat, kerana dia sendiri adalah seorang pemaju. Terdapat perasaan kuat bahawa dia akhirnya akan membaca siaran ini di HabrΓ©. Saya sangat berharap Oksana akan mengekalkan kerahsiaan saya. π
*lambai kaki dan berkata hai
Sedikit tentang sisi etika isu ini
Sejujurnya, saya tidak menyukai keseluruhan idea untuk merobotkan hubungan antara lelaki dan perempuan. Ada sesuatu yang betul tentang melemparkan jaket anda ke atas bahu orang asing yang sejuk yang berdiri sendirian. Atau mendekati seorang gadis cantik di kafe musim panas dan minum kopi bersama. Keluar dari belakang monitor sudah.
Musim panas adalah sekitar. Sudah tiba masanya untuk berkenalan.
Sumber: www.habr.com