O‘ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
Kompyuter injiniringi fakulteti
Sun’iy intellekt kafedrasi
Robotatexnikada sun’iy intellekt
texnologiyalari va vositasi
fanidan
5-TOPSHIRIQ
Mavzu: Neyron tarmoqlar
Bajardi: 221-21guruh talabasi
Abdusattorov Anvar
Tekshirdi: Umidjon Xasanov
Baho:_____
TOSHKENT 2023
Topshiriq
Neyron tarmog‘i. Eng oddiy neyron tarmoq qurish texnologiyasi
Ishdan maqsad. Talabalar neyron tarmog‘i, ularning ishlash prinsiplari, ishlash texnologiyalarini o‘rganish ular asosida sodda neyron tarmog‘ini ishlab chiqish.
Vazifalar:
Neyron tarmoq tushunchasini o‘rganish
Oddiy neyron tarmoq ishlab chiqish.
Dastur kodi va natijasi:
import numpy as np
import matplotlib.pyplot as plt
# Sigmoid aktivatsiya funksiyasi
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# Oson neyron tarmoq sinfi
class neyrontarmoq:
def init(self):
# Boshlang'ich vaznlar va boshiq (weights and biases)
self.weights = np.random.randn(1, 1) # Bitta kiritish uchun 1x1 vazn
self.bias = np.zeros((1, 1))
def forward(self, X):
# Ovoz berish (feedforward)
z = np.dot(X, self.weights) + self.bias
a = sigmoid(z)
return a
def train(self, X, y, davrlar, learning_rate):
# Modelni o'qitish
for davr in range(davrlar):
# Ovoz berish
predictions = self.forward(X)
# Xato (loss) hisoblash
loss = -y * np.log(predictions) - (1 - y) * np.log(1 - predictions)
loss = np.mean(loss)
# Gradients hisoblash
dz = predictions - y
dw = np.dot(X.T, dz) / X.shape[0]
db = np.sum(dz) / X.shape[0]
# Vaznlar va boshiqni yangilash
self.weights -= learning_rate * dw
self.bias -= learning_rate * db
# Har bir 100 chi bosqichda xato chiqarish
if davr % 100 == 0:
print(f'davr {davr}, Loss: {loss}')
# Ma'lumotlar
X = np.array([[0], [1]])
y = np.array([[0], [1]])
# Modelni yaratish
model =neyrontarmoq()
# Modelni o'qitish
model.train(X, y, davrlar=1000, learning_rate=0.1)
# Natijalarni chiqarish
predictions = model.forward(X)
print("Chipta:", X.flatten())
print("Bashoratlar: ", predictions.flatten())
# Natijalarni tasvirlash
plt.scatter(X.flatten(), predictions.flatten(), c='red', marker='o')
plt.xlabel('Kiritish')
plt.ylabel('Bashoratlar')
plt.show()
|