ʻO TensorFlow kahi mea hana maʻalahi e hana i nā hiʻohiʻona aʻo mīkini.
Ma kēia pou, e nānā mākou i ke ʻano o ka hana ʻana i kahi ʻōnaehana ʻike maka me TensorFlow, kahi ʻōnaehana hoʻonaʻauao mīkini open-source. E hele mākou ma luna o nā kaʻina hana koʻikoʻi i ka hoʻokumu ʻana i kahi ʻōnaehana ʻike maka kūleʻa, mai ka hōʻiliʻili ʻana a me ka hoʻomākaukau ʻana i ka ʻikepili no ka hoʻomaʻamaʻa ʻana a me ka loiloi ʻana i kahi kumu hoʻohālike.
E loaʻa iā ʻoe ka ʻike mua me TensorFlow e hana i ka ʻike maka me ke kōkua o nā snippets code a me nā hiʻohiʻona maoli. E ʻoluʻolu ʻoe e hahai i kā mākou hana ʻana.
Hoʻolauna i TensorFlow
ʻO TensorFlow kahi waihona manuahi a wehe ʻia. He pahu hana makemakika hōʻailona ia e hoʻohana ana i ka dataflow a me nā polokalamu ʻokoʻa. Hiki iā ʻoe ke lawelawe i nā hana me ia, me ka hohonu kaʻenehana kikowaena aʻo.
He ikaika a hiki ke hoʻololi ʻia ʻo TensorFlow. Pēlā nō, he mea hana maikaʻi loa ia no ka hoʻomohala ʻana a hoʻomoe ʻana i nā kumu hoʻohālike mīkini. Hiki iā ʻoe ke kūkulu i nā hiʻohiʻona paʻakikī me kekahi mau papa a me nā hana tensor. Eia kekahi, hiki ke hoʻoponopono maikaʻi ʻia nā hiʻohiʻona i kūkulu mua ʻia i loko o ka waihona no nā pono kikoʻī.
Eia kekahi, loaʻa iā TensorFlow kahi kaiāulu mea hoʻohana nui a hoʻonui. No laila, he plethora o ka ʻike a me ke kōkua no ka poʻe hou i ka paepae.
Ua kaulana ʻo TensorFlow no aʻo aʻo ma kahi hapa no ka mea hāʻawi ia i kahi kaʻina hana hope-to-end. No laila, hiki iā ʻoe ke hana maʻalahi, hoʻomaʻamaʻa a kau i nā hiʻohiʻona. Hāʻawi ia i nā mea hana a me nā hoʻolālā no ka hoʻomaikaʻi ʻana a me ka hoʻonui ʻana i nā hiʻohiʻona e kūpono i nā koi kikoʻī. He ʻokoʻa ia mai ka hoʻoponopono mua ʻana o ka ʻikepili a hiki i ka hoʻolālā hoʻohālike.
He aha ka ʻike maka?
ʻO ka ʻike maka he ʻikeʻikepili hana e hoʻomaopopo i ka ʻike o ke kanaka ma muli o ko lākou helehelena. Hoʻomaopopo kēia ʻenehana i nā ʻano helehelena, e like me ke ʻano a me ke ʻano o nā maka, ihu, a me ka waha.
A, hoʻohālikelike iā lākou i kahi waihona o nā helehelena i ʻike ʻia e ʻike i kahi pāʻani. He nui ka hoʻohana ʻana i ka ʻike maka, me nā ʻōnaehana palekana, hoʻonohonoho kiʻi, a me ka hōʻoia biometric.
Ua hoʻonui nui ʻia ka pololei o ka algorithms ʻike maka i nā makahiki i hala iho nei ma muli o nā holomua o ka aʻo ʻana i ka mīkini.
Ka lawe ʻana mai i nā hale waihona puke e pono ai
Ma mua o ka hoʻomaka ʻana i kekahi mea, pono mākou e hoʻokomo i nā hale waihona puke e pono ai no kā mākou kumu hoʻohālike. Lawe ʻia ʻo Tensorflow (tf) a hoʻohana ʻia e hana a hoʻomaʻamaʻa i ke kumu hoʻohālike. <(p>
Hana ʻo "numpy" i ka helu makemakika a me ka hana ʻikepili.
Hoʻokomo ʻia ʻo "matplotlib.pyplot" e like me plt a hoʻohana ʻia no ka palapala ʻikepili a me nā hiʻohiʻona.
ʻO ka hope, lawe ʻia mai ka "fetch lfw people" mai sklearn. ʻikepili a hoʻohana ʻia e hoʻouka i ka ʻikepili ʻike maka. He ʻāpana kēia hana o ka pahu hana scikit-Learn. Mahalo i kēia hana ʻaʻole pono mākou e hoʻouka i kahi ʻikepili ʻē aʻe. Ua kūkulu ʻia kēia ma sckit-learn.
A, hāʻawi ia iā ʻoe ke komo i kahi ākea ākea ʻikepili no ke aʻo ʻana i ka mīkini nā noi. Ma kēia hiʻohiʻona, hoʻohana mākou i ke kiʻi ʻana i ka poʻe lfw e kiʻi i ka ʻikepili "Labeled Faces in the Wild" (LFW). Loaʻa iā ia nā kiʻi o nā maka o nā kānaka a me nā lepili e hele pū me lākou.
He mea koʻikoʻi kēia mau hale waihona puke i ka hoʻokō a me ka loiloi ʻana i kā mākou kumu hoʻohālike maka.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Hana mua a hoʻouka i ka ʻikepili ʻike maka
Ma kēia ʻāpana, hoʻohana mākou i ka hana "fetch lfw people" e hana mua i ka ʻikepili ʻike maka. ʻO ka mea mua, hoʻohana mākou i ka kiʻi lfw poʻe me ke koho "min alo i kēlā me kēia kanaka = 60". Hōʻike kēia e makemake wale mākou e hoʻokomo i nā poʻe i loko o ka ʻikepili i loaʻa iā lākou he 60 mau kiʻi. No laila, ke hōʻoia nei mākou i loaʻa i kā mākou kumu hoʻohālike ka ʻikepili kūpono e aʻo ai. Eia kekahi, hoʻemi kēia i ka pōʻino o ka overfitting.
Lawe ʻia nā ʻikepili a me nā lepili mai ka mea helehelena a hāʻawi ʻia i nā ʻano X a me y. X hol.
Mākaukau mākou i kēia manawa e hoʻomaʻamaʻa i kā mākou kumu hoʻohālike maka me ka hoʻohana ʻana i ka ʻikepili i hana mua ʻia a me nā lepili.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Hoʻokaʻawale i ka hoʻomaʻamaʻa a me ka hoʻāʻo ʻana
Ma kēia ʻanuʻu, ua hoʻokaʻawale mākou i kā mākou ʻikepili ʻike maka i ʻelua ʻāpana me ka hoʻohana ʻana i ke ʻano hoʻokaʻawale hoʻāʻo kaʻaahi mai ke koho sklearn.model. ʻO ka pahuhopu o kēia māhele ʻo ia ka loiloi i ka hana o kā mākou kumu hoʻohālike ma hope o ke aʻo ʻana
ʻO ka hana hoʻokaʻawale hoʻāʻo kaʻaahi e ʻae ʻia e like me ka hoʻokomo ʻana i ka ʻikepili X a me nā lepili y. A, hoʻokaʻawale iā lākou i ka hoʻomaʻamaʻa a me nā hoʻonohonoho hoʻāʻo. Koho mākou i ka nui hōʻike = 0.2 i kēia hiʻohiʻona. Hōʻike kēia i ka 20% o ka ʻikepili e hoʻohana ʻia e like me ka hoʻonohonoho hoʻāʻo a me 80% i ka hoʻonohonoho hoʻomaʻamaʻa. Eia kekahi, hoʻohana mākou i ka mokuʻāina random = 42 e hōʻoia i ka puʻunaue mau ʻia ka ʻikepili i kēlā me kēia manawa i hana ʻia ke code.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Hoʻomākaukau i ka ʻikepili
ʻO ke kumu o ka hoʻoponopono mua ʻana i ka ʻikepili no ka hoʻomākaukau ʻana no ke komo ʻana i loko o ke kŘkohu. Hoʻoponopono mua ʻia ka ʻikepili i kēia code ma ka puʻunaue ʻana i kēlā me kēia helu ʻikepili me 255.
He aha ka mea i hoʻoikaika iā mākou e hoʻokō i kēia? ʻO ka Normalization kahi kaʻina hana preprocessing i hoʻohana ʻia i ke aʻo ʻana i ka mīkini e hōʻoiaʻiʻo i nā hiʻohiʻona a pau ma ka pae like. Ma kēia hiʻohiʻona, e puʻunaue ana me 255 mau unahi i ka ʻikepili i ka laulā o 0 a i 1, ʻo ia ka hana maʻamau no ka hoʻoponopono ʻana i nā kiʻi kiʻi.
ʻO kēia ka wikiwiki o ka hui ʻana o ke kumu hoʻohālike a hiki ke hoʻonui i kāna hana.
X_train = X_train / 255.0
X_test = X_test / 255.0
Ke hana ʻana i ke ʻano
Makemake mākou e ʻike i ke kanaka nona ka helehelena i ʻike ʻia ma ke kiʻi. I kēia hihia, e hoʻohana mākou i kahi pūnaewele pili piha, i ʻike pinepine ʻia he ʻupena paʻa. ʻO ia kahi pūnaewele neural artificial i hoʻohana ʻia e hana i ke kumu hoʻohālike.
Hoʻohālike ʻia nā ʻupena neural artificial e like me ke ʻano o ka hana a me ka hoʻonohonoho ʻana o ka lolo kanaka. Hana ʻia lākou i nā node hoʻoponopono ʻike a i ʻole nā neurons i hoʻopili ʻia. Hoʻopili ʻia kēlā me kēia neuron i kahi papa i loko o kahi pūnaewele paʻa i kēlā me kēia neuron i ka papa ma luna.
He ʻehā mau ʻāpana o ke kŘkohu ma kēia code. No ka hānai ʻia ʻana i ka papa aʻe, hoʻopalapala ʻia ka ʻikepili hoʻokomo i ka papa mua i loko o kahi ʻāpana hoʻokahi. ʻO nā neurons 128 a me 64 i nā papa ʻelua e pili ana, no laila, pili loa.
ʻO ka hana hoʻoulu ReLU kahi hana hoʻoulu kūikawā i hoʻohanaʻia e kēia mau papa. Me kēlā, hiki iā mākou ke kiʻi i ke kumu hoʻohālike e aʻo i nā hoʻoponopono laina ʻole ma waena o nā mea hoʻokomo a me nā mea hoʻopuka. Hoʻohana ka papa hope i ka hana hoʻonā softmax e hana i nā wānana. A, he papa pili piha ia me nā neurons e like me ka nui o nā papa.
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(62 * 47,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(len(target_names), activation='softmax')
])
Ka Houluulu ana i ka Model
Hoʻopili ʻia ke kumu hoʻohālike me ka hana "compile". Pono mākou e hoʻomākaukau i ke kumu hoʻohālike no ke aʻo ʻana. No laila, e wehewehe mākou i ka optimizer, hana poho, a me nā metric e hoʻohana ʻia e loiloi i ke kumu hoʻohālike.
I ka wā o ka hoʻomaʻamaʻa ʻana, aia ka optimizer i ka hoʻololi ʻana i nā ʻāpana o ke kumu hoʻohālike. ʻO ka "adam" optimizer kahi loea hoʻonaʻauao hohonu kaulana.
Hoʻohana mākou i ka hana poho no ka loiloi i ka hana o ke kŘkohu ma ka ʻikepili aʻo. No ka mea, ʻo nā lepili i hoʻopaʻa ʻia he mau helu helu e hōʻike ana i ka papa o ke kiʻi ma mua o nā vector i hoʻopaʻa ʻia wela hoʻokahi, ʻoi aku ka maikaʻi o ka hana poho "sparse categorical crossentropy".
ʻO ka hope, wehewehe mākou i nā ana e loiloi i ke kumu hoʻohālike, i kēia hihia, "ka pololei".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Aʻo Hoʻohālike
E hoʻohana mākou i ka hana "fit" e hoʻomaʻamaʻa i ke kumu hoʻohālike.
E hoʻolako ana mākou i ka ʻikepili hoʻomaʻamaʻa (X train) a me nā lepili pili (y train), a me ka hoʻonohonoho ʻana i ka helu o nā epochs (iterations) e holo e like me 10. Hoʻololi ke kaʻina hana hoʻomaʻamaʻa i nā paona hoʻohālike e hōʻemi i kahi poho (ka ʻokoʻa ma waena o wānana a me nā lepili maoli) a hoʻomaikaʻi i ka pololei o ka ʻikepili aʻo.
model.fit(X_train, y_train, epochs=10)
Hoʻohālikelike Hoʻohālike
I kēia manawa, pono mākou e loiloi i ke kumu hoʻohālike i aʻo ʻia ma ka ʻikepili hōʻike. Hoʻohana mākou i ka poho hoʻāʻo a hoʻohana ʻia ka pololei o ka hoʻāʻo e loiloi i ka hana o ke kŘkohu. Ma ka hōʻike hōʻike hōʻike X a me nā hōʻailona hōʻike y hoʻāʻo, pono mākou e kāhea i ka "model.evaluate function"
Hoʻopuka ka hana i ka pololei o ka hoʻāʻo a me ka nalowale hoʻāʻo. Loaʻa kēia mau waiwai i ka pohō a me ka pololei o ka hoʻāʻo ʻana. ʻO ka hope, hoʻohana mākou i ka hana "print" e hoʻopuka i ka pololei o ka hōʻike.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
ʻO nā papa wānana a me ka loaʻa ʻana o nā papa wānana
Ke hoʻohana nei i ke kumu hoʻonaʻauao a me ka ʻikepili hōʻike, hana ka algorithm i nā wānana. Ke hāʻawi ʻia ka ʻikepili hoʻāʻo i ke ʻano "model.predict", e hoʻopuka i kahi ʻano wānana no kēlā me kēia kiʻi i ka hoʻonohonoho hoʻāʻo.
A laila e kiʻi ʻia ka inoa papa i koho ʻia no kēlā me kēia kiʻi mai ka papa inoa "nā inoa i koho ʻia" me ka hoʻohana ʻana i ka hana "np.argmax" e ʻike ai i ka papa kuhikuhi me ka nui o ka wānana i wānana ʻia. Hoʻohana ʻia kēia ʻano helu no ka hoʻoholo ʻana i ka papa i wānana ʻia no kēlā me kēia kiʻi.
Ma ka hoʻohana ʻana i ka ʻike papa inoa, ua kau ʻia nā wanana a pau i ka papa kuhikuhi "Wanamua" i kēia ʻano, e hopena i ka papa inoa "nā papa wānana".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Nānā i nā wānana
Hiki iā mākou ke ʻike i ke ʻano o kā mākou kumu hoʻohālike.
No ka loiloi i ka maikaʻi o ka hana ʻana o ke kumu hoʻohālike, e hōʻike ʻia nā kiʻi 10 mua a me kā lākou wānana. E hoʻolālā ia i nā kiʻi ma ke kiʻi hina a hōʻike i ka papa maoli o ke kiʻi a me ka papa i wānana ʻia e ke kumu hoʻohālike e hoʻohana ana i ka module matplotlib.pyplot.
Hoʻohana ʻia ka hana "imshow" e ka loop loop e hoʻolālā i kēlā me kēia o nā kiʻi hoʻonohonoho mua 10. Hoʻohana ʻia nā inoa i manaʻo ʻia[y test[i]] a me nā papa wānana[i] e hoʻoholo i ka papa maoli o ke kiʻi a me ka papa wānana. Hōʻike ʻia nā poʻo inoa o kēlā me kēia ʻāpana e kēia mau papa inoa.
ʻO ka hope loa, hōʻike ʻia ka ʻāpana me ka hoʻohana ʻana i ke ʻano plt.show().
for i in range(10):
plt.imshow(X_test[i].reshape(62, 47), cmap='gray')
plt.title(f"True: {target_names[y_test[i]]}, Predicted:{predicted_classes[i]}")
plt.show()
Hoʻopau
Hāʻawi ʻo TensorFlow i kahi kaiapuni piha a maʻalahi no ka hana ʻana i nā hiʻohiʻona aʻo mīkini.
Ma ka hoʻoponopono maikaʻi ʻana i ke kumu hoʻohālike e hoʻokō i nā koi kūikawā a i ʻole ma ka hoʻohui ʻana i nā mea hou i ke aʻo ʻana i ka mīkini, hiki ke hoʻonui ʻia ka pololei o ke kumu hoʻohālike.
E hoʻohana nui ʻia ka TensorFlow a me ka ʻike maka i nā ʻoihana e like me nā ʻōnaehana palekana, ka hōʻoia biometric, a me ka mālama olakino i ka wā e hiki mai ana. E ʻike koke ana mākou i nā mea hou hoihoi.
Waiho i ka Reply