{"id":325961,"date":"2021-07-05T09:00:16","date_gmt":"2021-07-05T09:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=325961"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=325961","title":{"rendered":"\u0413\u0438\u0431\u043a\u0438\u0439 \u043d\u0435\u0439\u0440\u043e\u043d: \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043b\u043e\u0438"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yc\/tm\/aw\/yctmawjirmngqyyq7_pggbpd8g0.png\" width=\"1012\" height=\"759\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u0445 \u0438 \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u0430\u0445. \u041f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u0438\u043d\u0443\u0441\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v5\/_k\/vv\/v5_kvvaekrfzrh4hfpbejocxa7c.png\" width=\"1181\" height=\"287\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/et\/tn\/cn\/ettncnhyazhzbxpirmthkashytq.png\" width=\"3200\" height=\"1812\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hx\/y9\/43\/hxy943sftiluq_rgn9le0gsppcm.png\" width=\"1181\" height=\"115\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dg\/2p\/mr\/dg2pmrowawr8ifujv-ye6fwbtx0.png\" width=\"3200\" height=\"1812\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ck\/ti\/tf\/cktitfmnrz87pegkcaj8ywl-hl8.png\" width=\"1181\" height=\"107\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7y\/xn\/my\/7yxnmyxwnshgznlbltvu7qtqhye.png\" width=\"3200\" height=\"1812\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ry\/qa\/bd\/ryqabdjp92rpauuu49jpfggndpq.png\" width=\"1181\" height=\"112\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cw\/5x\/xr\/cw5xxrxqcowrfh6fkxxxdkgk-ak.png\" width=\"3200\" height=\"1812\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c,\u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u0438\u043d \u043d\u0435\u0439\u0440\u043e\u043d \u0441 \u043e\u0434\u043d\u0438\u043c \u0432\u0445\u043e\u0434\u043e\u043c \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0445\u043e\u0434\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0432\u0445\u043e\u0434\u043e\u043c \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b?<\/p>\n<p>\u0423 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u0432\u0430 \u0432\u0445\u043e\u0434\u0430. \u041e\u0434\u0438\u043d \u0432\u0445\u043e\u0434 &#8212; x (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435\u0439\u0440\u043e\u043d\u0430) \u0438 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0430 (\u0431\u0438\u0430\u0441).<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041a\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043b\u044e\u0431\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e,\u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0432 1 (\u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443).<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0432\u043e\u0437\u0432\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0435\u043f\u0435\u043d\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pe\/-u\/tk\/pe-utkay2pu8vknjngw-2lxb73a.png\" width=\"1121\" height=\"807\"><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c,\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440\u044b \u043e\u0434\u0435\u0436\u0434\u044b fashion_mnist (\u0444\u0443\u0442\u0431\u043e\u043b\u043a\u0438, \u043a\u0435\u0434\u044b, \u0448\u0442\u0430\u043d\u044b \u0438 \u0442.\u0434.). \u041d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f 28*28 8-\u0431\u0438\u0442\u043d\u0430\u044f \u0447\u0435\u0440\u043d\u043e-\u0431\u0435\u043b\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430. \u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043a\u0440\u044b\u0442\u044b\u0439 \u0441\u043b\u043e\u0439 \u0438\u0437 300 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432,\u0438 \u0438\u043c\u0435\u0435\u0442 10 \u0432\u044b\u0445\u043e\u0434\u043e\u0432. \u041f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u043e\u0434\u0435\u0436\u0434\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u043a\u043b\u0430\u0441\u0441 \u043e\u0442 0 \u0434\u043e 10. \u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0434\u0435\u0436\u0434\u044b (\u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u0431\u0440\u044e\u043a\u0438 \u043e\u0442 \u0444\u0443\u0442\u0431\u043e\u043b\u043e\u043a \u0438 \u0442.\u0434.).<\/p>\n<p>\u042f \u0441\u043a\u0430\u0447\u0430\u043b \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440\u044b \u043e\u0434\u0435\u0436\u0434\u044b \u0441 \u0433\u0438\u0442\u0445\u0430\u0431\u0430 \u043f\u043e <a href=\"https:\/\/github.com\/ymattu\/fashion-mnist-csv\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435 <\/a><\/p>\n<p>\u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445) \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0432\u0435\u0441\u0430\u043c\u0438(\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445) \u0432\u0445\u043e\u0434\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438) \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438,\u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0438 \u0448\u0435\u0441\u0442\u044c\u044e(\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438) \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jy\/1j\/pi\/jy1jpihbw8mgxysr1ffe4netbau.png\" width=\"1064\" height=\"958\"><figcaption><\/figcaption><\/figure>\n<p>x,x2,x3-\u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438,\u0430 x^0,x^1,x^2,x2^0,x2^1,x2^2 &#8212; \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 (\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u0435\u0441\u0430\u043c\u0438)<\/p>\n<p>err2=w1*err1<\/p>\n<p>err3=w2*err1<\/p>\n<p>err4=w3*err1<\/p>\n<p>err5=w4*err1<\/p>\n<p>err6=w5*err1<\/p>\n<p>err6=w6*err1<\/p>\n<p>err8=err2+err3+err4<\/p>\n<p>err9=err5+err6+err7<\/p>\n<p>w1+=speed_edication*x^0*err2*f(x^0)*(1-f(x^0))<\/p>\n<p>w2+=speed_edication*x^1*err3*f(x^0)*(f-f(x^1))<\/p>\n<p>w3+=speed_edication*x^2*err2*f(x^0)*(1-f(x^0))<\/p>\n<p>w4+=speed_edication*x2^0*err3*f(x2^0)*(f-f(x2^0))<\/p>\n<p>w5+=speed_edication*x2^1*err2*f(x2^1)*(1-f(x2^1))<\/p>\n<p>w6+=speed_edication*x2^2*err3*f(x2^2)*(f-f(x2^2))<\/p>\n<p>\u0433\u0434\u0435 f(x) = 1\/(1+exp(-x))<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0451 \u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0435\u0451 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435.<\/p>\n<h2>\u041d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/h2>\n<pre><code class=\"python\">import numpy as np from numpy import genfromtxt   OUT_CLASSES=10 HIDDEN_LEN=300 SPEED_EDICATION=0.00001 EPOCHS=3000 power1=2 power2=2 train = genfromtxt('fashion_train.csv', delimiter=',') train=train[1:,:] train_x=np.array(train[:,:-1]) train_x\/=255 train_y=np.array(train[:,-1])     train_y = train_y.astype(int) out = np.zeros(OUT_CLASSES*len(train_y)) index_arr=np.reshape(train_y,(1,len(train_y)))   out = np.reshape(out,(OUT_CLASSES,len(train_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) train_y=out.T  test = genfromtxt('fashion_test.csv', delimiter=',') test=test[1:,:] test_x=np.array(test[:,:-1]) test_x\/=255 test_y=np.array(test[:,-1])  test_y = test_y.astype(int) out = np.zeros(OUT_CLASSES*len(test_y)) index_arr=np.reshape(test_y,(1,len(test_y)))   out = np.reshape(out,(OUT_CLASSES,len(test_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) test_y=out.T      weight1=2*np.random.random((power1*int(train_x.size\/len(train_x)),HIDDEN_LEN))-1 weight2=2*np.random.random((HIDDEN_LEN*power2,OUT_CLASSES))-1  power1_arr = np.tile(np.arange(power1),train_x.size).reshape(train_x.size,power1) power2_arr = np.tile(np.arange(power2),HIDDEN_LEN*len(train_x)).reshape(HIDDEN_LEN*len(train_x),power2)  power1_arr_test = np.tile(np.arange(power1),test_x.size).reshape(test_x.size,power1) power2_arr_test = np.tile(np.arange(power2),HIDDEN_LEN*len(test_x)).reshape(HIDDEN_LEN*len(test_x),power2)  train_x2=np.reshape(train_x,(train_x.size,1)) test_x2=np.reshape(test_x,(test_x.size,1))  virtual_train_x = np.power(train_x2,power1_arr).reshape(len(train_x),int(power1*train_x.size\/len(train_x)))  virtual_test_x = np.power(test_x2,power1_arr_test).reshape(len(test_x),int(power1*test_x.size\/len(test_x)))   someones = np.ones(power1)  persent_train = np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1) persent_test = np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1)  max_persent = 0  error_test_list=[] error_train_list=[] error_test_list_persent=[] error_train_list_persent=[]   for step in range(EPOCHS):      hidden_layer = 1\/(1+np.exp(-(np.dot(virtual_train_x,weight1))))     hidden_layer2 = np.reshape(hidden_layer,(hidden_layer.size,1))     virtual_hidden_layer_train = np.power(hidden_layer2,power2_arr).reshape(len(hidden_layer),int(power2*hidden_layer.size\/len(hidden_layer)))     out_with_error = 1\/(1+np.exp(-(np.dot(virtual_hidden_layer_train,weight2))))     error_w2 = (train_y-out_with_error)     weight2+=SPEED_EDICATION*virtual_hidden_layer_train.T.dot(error_w2*out_with_error*(1-out_with_error))     error_w1 = error_w2.dot(weight2.T)      error_w1_reshaped = np.reshape(error_w1,(int(error_w1.size\/power1),power1))     error_w1_virtual = np.reshape(np.dot(error_w1_reshaped,someones),(len(error_w1),int(error_w1.size\/power1\/len(error_w1))))          weight1+=SPEED_EDICATION*virtual_train_x.T.dot(error_w1_virtual)         hidden_layer_test = 1\/(1+np.exp(-(np.dot(virtual_test_x,weight1))))     hidden_layer2_test = np.reshape(hidden_layer_test,(hidden_layer_test.size,1))     virtual_hidden_layer_test = np.power(hidden_layer2_test,power2_arr_test).reshape(len(hidden_layer_test),int(power2*hidden_layer_test.size\/len(hidden_layer_test)))     out_with_error_test = 1\/(1+np.exp(-(np.dot(virtual_hidden_layer_test,weight2))))     error_w2_test = (test_y-out_with_error_test)      p_train = np.dot(np.abs(train_y-np.around(out_with_error)),persent_train)     p_test = np.dot(np.abs(test_y-np.around(out_with_error_test)),persent_test)      err_p_train = 100*(1-np.sum(np.logical_and(p_train,True))\/len(train_y))     err_p_test = 100*(1-np.sum(np.logical_and(p_test,True))\/len(test_y))      if max_persent&lt;err_p_test:         max_persent=err_p_test           error_test_list.append(np.sum(np.square(error_w2_test))\/2)     error_train_list.append(np.sum(np.square(error_w2))\/2)     error_test_list_persent.append(err_p_test)     error_train_list_persent.append(err_p_train)      print(\"step =\",step,\"\/\",EPOCHS,\" error train = \",np.sum(np.square(error_w2))\/2,\" error test = \",np.sum(np.square(error_w2_test)\/2))     print(\"step =\",step,\"\/\",EPOCHS,\" error train = \",err_p_train,\"%\",\" error test = \",err_p_test,\"%\")     print(\"step =\",step,\"\/\",EPOCHS,\" max persent test = \",max_persent,\"%\")  list_size = len(error_train_list) data = error_train_list data.extend(error_test_list) data.extend(error_train_list_persent) data.extend(error_test_list_persent) data = np.reshape(data,(4,list_size))  np.savetxt('out.csv',data.T,delimiter=',',fmt='%.4f')   <\/code><\/pre>\n<h2> \u042f \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c cupy,\u0434\u043b\u044f \u0442\u043e\u0433\u043e,\u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435.<\/h2>\n<pre><code class=\"python\">import numpy as np from numpy import genfromtxt import cupy as cp  OUT_CLASSES=10 HIDDEN_LEN=300 SPEED_EDICATION=0.00001 EPOCHS=1000 power1=2 power2=2   train = genfromtxt('fashion_train.csv', delimiter=',') train=train[1:,:] train_x=np.array(train[:,:-1]) train_x\/=255 train_y=np.array(train[:,-1])    train_y = train_y.astype(int) out = np.zeros(OUT_CLASSES*len(train_y)) index_arr=np.reshape(train_y,(1,len(train_y)))   out = np.reshape(out,(OUT_CLASSES,len(train_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) train_y=cp.array(out.T)  test = genfromtxt('fashion_test.csv', delimiter=',') test=test[1:,:] test_x=np.array(test[:,:-1]) test_x\/=255 test_y=np.array(test[:,-1])  test_y = np.array(test_y.astype(int)) out = np.zeros(OUT_CLASSES*len(test_y)) index_arr=np.reshape(test_y,(1,len(test_y)))   out = np.reshape(out,(OUT_CLASSES,len(test_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) test_y=cp.array(out.T)   weight1=cp.array(2*np.random.random((power1*int(train_x.size\/len(train_x)),HIDDEN_LEN))-1) weight2=cp.array(2*np.random.random((HIDDEN_LEN*power2,OUT_CLASSES))-1)  power1_arr = np.tile(np.arange(power1),train_x.size).reshape(train_x.size,power1) power2_arr = np.tile(np.arange(power2),HIDDEN_LEN*len(train_x)).reshape(HIDDEN_LEN*len(train_x),power2)  power1_arr_test = np.tile(np.arange(power1),test_x.size).reshape(test_x.size,power1) power2_arr_test = cp.array(np.tile(np.arange(power2),HIDDEN_LEN*len(test_x)).reshape(HIDDEN_LEN*len(test_x),power2))  train_x2=np.reshape(train_x,(train_x.size,1)) test_x2=np.reshape(test_x,(test_x.size,1))  virtual_train_x = cp.array(np.power(train_x2,power1_arr).reshape(len(train_x),int(power1*train_x.size\/len(train_x))))  virtual_test_x = cp.array(np.power(test_x2,power1_arr_test).reshape(len(test_x),int(power1*test_x.size\/len(test_x))))   someones = cp.array(np.ones(power1))  persent_train = cp.array(np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1)) persent_test = cp.array(np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1))  max_persent = 0  error_test_list=[] error_train_list=[] error_test_list_persent=[] error_train_list_persent=[]   for step in range(EPOCHS):      hidden_layer = 1\/(1+cp.exp(-(cp.dot(virtual_train_x,weight1))))     hidden_layer2 = cp.reshape(hidden_layer,(hidden_layer.size,1))     virtual_hidden_layer_train = cp.power(hidden_layer2,cp.array(power2_arr)).reshape(len(hidden_layer),int(power2*hidden_layer.size\/len(hidden_layer)))     out_with_error = 1\/(1+cp.exp(-(cp.dot(virtual_hidden_layer_train,cp.array(weight2)))))     error_w2 = (cp.array(train_y)-out_with_error)     weight2+=SPEED_EDICATION*virtual_hidden_layer_train.T.dot(error_w2*out_with_error*(1-out_with_error))     error_w1 = error_w2.dot(weight2.T)      error_w1_reshaped = cp.reshape(error_w1,(int(error_w1.size\/power1),power1))     error_w1_virtual = cp.reshape(cp.dot(error_w1_reshaped,someones),(len(error_w1),int(error_w1.size\/power1\/len(error_w1))))       weight1+=SPEED_EDICATION*virtual_train_x.T.dot(error_w1_virtual)         hidden_layer_test = 1\/(1+cp.exp(-(cp.dot(virtual_test_x,weight1))))     hidden_layer2_test = cp.reshape(hidden_layer_test,(hidden_layer_test.size,1))     virtual_hidden_layer_test = cp.power(hidden_layer2_test,power2_arr_test).reshape(len(hidden_layer_test),int(power2*hidden_layer_test.size\/len(hidden_layer_test)))     out_with_error_test = 1\/(1+np.exp(-(np.dot(virtual_hidden_layer_test,weight2))))     error_w2_test = (test_y-out_with_error_test)      p_train = cp.dot(cp.abs(train_y-cp.around(out_with_error)),persent_train)     p_test = cp.dot(cp.abs(test_y-cp.around(out_with_error_test)),persent_test)      err_p_train = 100*(1-cp.sum(np.logical_and(p_train,True))\/len(train_y))     err_p_test = 100*(1-cp.sum(np.logical_and(p_test,True))\/len(test_y))      if max_persent&lt;err_p_test:         max_persent=err_p_test           error_test_list.append(cp.sum(cp.square(error_w2_test))\/2)     error_train_list.append(cp.sum(cp.square(error_w2))\/2)     error_test_list_persent.append(err_p_test)     error_train_list_persent.append(err_p_train)      print(\"step =\",step,\"\/\",EPOCHS,\" error train = \",np.sum(np.square(error_w2))\/2,\" error test = \",np.sum(np.square(error_w2_test)\/2))     print(\"step =\",step,\"\/\",EPOCHS,\" error train = \",err_p_train,\"%\",\" error test = \",err_p_test,\"%\")     print(\"step =\",step,\"\/\",EPOCHS,\" max persent test = \",max_persent,\"%\")  list_size = len(error_train_list) data = error_train_list data.extend(error_test_list) data.extend(error_train_list_persent) data.extend(error_test_list_persent) data=cp.array(data) data = cp.ndarray.get(cp.reshape(data,(4,list_size)))   np.savetxt('out.csv',data.T,delimiter=',',fmt='%.4f')<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b power1=2,power2=2,\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d 0.00001,\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043f\u043e\u0445=3000.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ju\/ua\/xi\/juuaxicrrvsqv8blkngnnvpwnko.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kh\/jh\/84\/khjh84cfykcz_goycc52yho_1tc.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443(\u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445) \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 error=58.6%<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b power1=3,power2=3,\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d 0.00001,\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043f\u043e\u0445=3000.<\/p>\n<p>  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gr\/oi\/ed\/groied1jrjufdsr3jx68joe-wyu.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rn\/dl\/co\/rndlcoxnphuvfytzxxf-ttxy3n8.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443(\u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445) \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 error=61,6%<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b power1=4,power2=4,\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d 0.000001,\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043f\u043e\u0445=60000.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6k\/h9\/c1\/6kh9c1rdquaz_gzhyhqg4wijgau.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fu\/cf\/oz\/fucfoz_jrbuyktteqcynf5ly-1g.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443(\u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445) \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 error=62.7%<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b power1=5,power2=5,\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d 0.000001,\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043f\u043e\u0445=90000.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/l_\/px\/il\/l_pxilkkoinxcujbs7osmtaxejc.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ci\/px\/_w\/cipx_wiblosxgueorw2zxhza2yg.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 (\u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445) \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 error=62.8%<\/p>\n<p>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043e\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9l\/p5\/ae\/9lp5ae9tibdy7n25yiopmtfxscw.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p> \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u0435\u043b\u0430 \u0441\u0435\u0431\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u043e (\u043d\u0430\u0432\u0435\u0440\u043d\u043e \u0438\u0437-\u0437\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fv\/tg\/1-\/fvtg1-ewe4hgqejgdxgnticwnac.png\" width=\"640\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b\u0432\u043e\u0434: \u041e\u0448\u0438\u0431\u043a\u0430 (\u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445) \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0440\u0430\u0441\u0442\u0435\u0442. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u043e, \u043d\u0430 0.1 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043c\u0435\u043d\u044c\u0448\u0435, \u043d\u043e \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u043f\u043e\u0445 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430<\/p>\n<p>1) \u041a\u0430\u043d\u0438\u0430 \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u0432\u0438\u0447 \u041a\u0430\u043d \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0439 \u0441\u0435\u0442\u0438. \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f                                                                         <\/p>\n<p>2) \u0422\u0430\u0440\u0438\u043a \u0420\u0430\u0448\u0438\u0434.\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c.  <\/p>\n<p>3) \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/habr.com\/ru\/post\/271563\/\" rel=\"noopener noreferrer nofollow\">\u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0432 11 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043d\u0430 Python <\/a><\/p>\n<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/566066\/\"> https:\/\/habr.com\/ru\/post\/566066\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u0445 \u0438 \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u0430\u0445. \u041f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u0438\u043d\u0443\u0441\u0430.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c,\u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u0438\u043d \u043d\u0435\u0439\u0440\u043e\u043d \u0441 \u043e\u0434\u043d\u0438\u043c \u0432\u0445\u043e\u0434\u043e\u043c \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0445\u043e\u0434\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0432\u0445\u043e\u0434\u043e\u043c \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b?<\/p>\n<p>\u0423 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u0432\u0430 \u0432\u0445\u043e\u0434\u0430. \u041e\u0434\u0438\u043d \u0432\u0445\u043e\u0434 &#8212; x (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435\u0439\u0440\u043e\u043d\u0430) \u0438 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0430 (\u0431\u0438\u0430\u0441).<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041a\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043b\u044e\u0431\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e,\u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0432 1 (\u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443).<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0432\u043e\u0437\u0432\u0435\u0441\u0442\u0438 \u043b\u044e\u0431\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0435\u043f\u0435\u043d\u044c.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u0430. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c,\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440\u044b \u043e\u0434\u0435\u0436\u0434\u044b fashion_mnist (\u0444\u0443\u0442\u0431\u043e\u043b\u043a\u0438, \u043a\u0435\u0434\u044b, \u0448\u0442\u0430\u043d\u044b \u0438 \u0442.\u0434.). \u041d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f 28*28 8-\u0431\u0438\u0442\u043d\u0430\u044f \u0447\u0435\u0440\u043d\u043e-\u0431\u0435\u043b\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430. \u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043a\u0440\u044b\u0442\u044b\u0439 \u0441\u043b\u043e\u0439 \u0438\u0437 300 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432,\u0438 \u0438\u043c\u0435\u0435\u0442 10 \u0432\u044b\u0445\u043e\u0434\u043e\u0432. \u041f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u043e\u0434\u0435\u0436\u0434\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u043a\u043b\u0430\u0441\u0441 \u043e\u0442 0 \u0434\u043e 10. \u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0434\u0435\u0436\u0434\u044b (\u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u0431\u0440\u044e\u043a\u0438 \u043e\u0442 \u0444\u0443\u0442\u0431\u043e\u043b\u043e\u043a \u0438 \u0442.\u0434.).<\/p>\n<p>\u042f \u0441\u043a\u0430\u0447\u0430\u043b \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440\u044b \u043e\u0434\u0435\u0436\u0434\u044b \u0441 \u0433\u0438\u0442\u0445\u0430\u0431\u0430 \u043f\u043e <a href=\"https:\/\/github.com\/ymattu\/fashion-mnist-csv\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0435 <\/a><\/p>\n<p>\u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445) \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0432\u0435\u0441\u0430\u043c\u0438(\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445) \u0432\u0445\u043e\u0434\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438) \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438,\u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0438 \u0448\u0435\u0441\u0442\u044c\u044e(\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438) \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>x,x2,x3-\u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438,\u0430 x^0,x^1,x^2,x2^0,x2^1,x2^2 &#8212; \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 (\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u0435\u0441\u0430\u043c\u0438)<\/p>\n<p>err2=w1*err1<\/p>\n<p>err3=w2*err1<\/p>\n<p>err4=w3*err1<\/p>\n<p>err5=w4*err1<\/p>\n<p>err6=w5*err1<\/p>\n<p>err6=w6*err1<\/p>\n<p>err8=err2+err3+err4<\/p>\n<p>err9=err5+err6+err7<\/p>\n<p>w1+=speed_edication*x^0*err2*f(x^0)*(1-f(x^0))<\/p>\n<p>w2+=speed_edication*x^1*err3*f(x^0)*(f-f(x^1))<\/p>\n<p>w3+=speed_edication*x^2*err2*f(x^0)*(1-f(x^0))<\/p>\n<p>w4+=speed_edication*x2^0*err3*f(x2^0)*(f-f(x2^0))<\/p>\n<p>w5+=speed_edication*x2^1*err2*f(x2^1)*(1-f(x2^1))<\/p>\n<p>w6+=speed_edication*x2^2*err3*f(x2^2)*(f-f(x2^2))<\/p>\n<p>\u0433\u0434\u0435 f(x) = 1\/(1+exp(-x))<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0451 \u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0435\u0451 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435.<\/p>\n<h2>\u041d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/h2>\n<pre><code class=\"python\">import numpy as np from numpy import genfromtxt   OUT_CLASSES=10 HIDDEN_LEN=300 SPEED_EDICATION=0.00001 EPOCHS=3000 power1=2 power2=2 train = genfromtxt('fashion_train.csv', delimiter=',') train=train[1:,:] train_x=np.array(train[:,:-1]) train_x\/=255 train_y=np.array(train[:,-1])     train_y = train_y.astype(int) out = np.zeros(OUT_CLASSES*len(train_y)) index_arr=np.reshape(train_y,(1,len(train_y)))   out = np.reshape(out,(OUT_CLASSES,len(train_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) train_y=out.T  test = genfromtxt('fashion_test.csv', delimiter=',') test=test[1:,:] test_x=np.array(test[:,:-1]) test_x\/=255 test_y=np.array(test[:,-1])  test_y = test_y.astype(int) out = np.zeros(OUT_CLASSES*len(test_y)) index_arr=np.reshape(test_y,(1,len(test_y)))   out = np.reshape(out,(OUT_CLASSES,len(test_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) test_y=out.T      weight1=2*np.random.random((power1*int(train_x.size\/len(train_x)),HIDDEN_LEN))-1 weight2=2*np.random.random((HIDDEN_LEN*power2,OUT_CLASSES))-1  power1_arr = np.tile(np.arange(power1),train_x.size).reshape(train_x.size,power1) power2_arr = np.tile(np.arange(power2),HIDDEN_LEN*len(train_x)).reshape(HIDDEN_LEN*len(train_x),power2)  power1_arr_test = np.tile(np.arange(power1),test_x.size).reshape(test_x.size,power1) power2_arr_test = np.tile(np.arange(power2),HIDDEN_LEN*len(test_x)).reshape(HIDDEN_LEN*len(test_x),power2)  train_x2=np.reshape(train_x,(train_x.size,1)) test_x2=np.reshape(test_x,(test_x.size,1))  virtual_train_x = np.power(train_x2,power1_arr).reshape(len(train_x),int(power1*train_x.size\/len(train_x)))  virtual_test_x = np.power(test_x2,power1_arr_test).reshape(len(test_x),int(power1*test_x.size\/len(test_x)))   someones = np.ones(power1)  persent_train = np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1) persent_test = np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1)  max_persent = 0  error_test_list=[] error_train_list=[] error_test_list_persent=[] error_train_list_persent=[]   for step in range(EPOCHS):      hidden_layer = 1\/(1+np.exp(-(np.dot(virtual_train_x,weight1))))     hidden_layer2 = np.reshape(hidden_layer,(hidden_layer.size,1))     virtual_hidden_layer_train = np.power(hidden_layer2,power2_arr).reshape(len(hidden_layer),int(power2*hidden_layer.size\/len(hidden_layer)))     out_with_error = 1\/(1+np.exp(-(np.dot(virtual_hidden_layer_train,weight2))))     error_w2 = (train_y-out_with_error)     weight2+=SPEED_EDICATION*virtual_hidden_layer_train.T.dot(error_w2*out_with_error*(1-out_with_error))     error_w1 = error_w2.dot(weight2.T)      error_w1_reshaped = np.reshape(error_w1,(int(error_w1.size\/power1),power1))     error_w1_virtual = np.reshape(np.dot(error_w1_reshaped,someones),(len(error_w1),int(error_w1.size\/power1\/len(error_w1))))          weight1+=SPEED_EDICATION*virtual_train_x.T.dot(error_w1_virtual)         hidden_layer_test = 1\/(1+np.exp(-(np.dot(virtual_test_x,weight1))))     hidden_layer2_test = np.reshape(hidden_layer_test,(hidden_layer_test.size,1))     virtual_hidden_layer_test = np.power(hidden_layer2_test,power2_arr_test).reshape(len(hidden_layer_test),int(power2*hidden_layer_test.size\/len(hidden_layer_test)))     out_with_error_test = 1\/(1+np.exp(-(np.dot(virtual_hidden_layer_test,weight2))))     error_w2_test = (test_y-out_with_error_test)      p_train = np.dot(np.abs(train_y-np.around(out_with_error)),persent_train)     p_test = np.dot(np.abs(test_y-np.around(out_with_error_test)),persent_test)      err_p_train = 100*(1-np.sum(np.logical_and(p_train,True))\/len(train_y))     err_p_test = 100*(1-np.sum(np.logical_and(p_test,True))\/len(test_y))      if max_persent&lt;err_p_test:         max_persent=err_p_test           error_test_list.append(np.sum(np.square(error_w2_test))\/2)     error_train_list.append(np.sum(np.square(error_w2))\/2)     error_test_list_persent.append(err_p_test)     error_train_list_persent.append(err_p_train)      print(\"step =\",step,\"\/\",EPOCHS,\" error train = \",np.sum(np.square(error_w2))\/2,\" error test = \",np.sum(np.square(error_w2_test)\/2))     print(\"step =\",step,\"\/\",EPOCHS,\" error train = \",err_p_train,\"%\",\" error test = \",err_p_test,\"%\")     print(\"step =\",step,\"\/\",EPOCHS,\" max persent test = \",max_persent,\"%\")  list_size = len(error_train_list) data = error_train_list data.extend(error_test_list) data.extend(error_train_list_persent) data.extend(error_test_list_persent) data = np.reshape(data,(4,list_size))  np.savetxt('out.csv',data.T,delimiter=',',fmt='%.4f')   <\/code><\/pre>\n<h2> \u042f \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c cupy,\u0434\u043b\u044f \u0442\u043e\u0433\u043e,\u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435.<\/h2>\n<pre><code class=\"python\">import numpy as np from numpy import genfromtxt import cupy as cp  OUT_CLASSES=10 HIDDEN_LEN=300 SPEED_EDICATION=0.00001 EPOCHS=1000 power1=2 power2=2   train = genfromtxt('fashion_train.csv', delimiter=',') train=train[1:,:] train_x=np.array(train[:,:-1]) train_x\/=255 train_y=np.array(train[:,-1])    train_y = train_y.astype(int) out = np.zeros(OUT_CLASSES*len(train_y)) index_arr=np.reshape(train_y,(1,len(train_y)))   out = np.reshape(out,(OUT_CLASSES,len(train_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) train_y=cp.array(out.T)  test = genfromtxt('fashion_test.csv', delimiter=',') test=test[1:,:] test_x=np.array(test[:,:-1]) test_x\/=255 test_y=np.array(test[:,-1])  test_y = np.array(test_y.astype(int)) out = np.zeros(OUT_CLASSES*len(test_y)) index_arr=np.reshape(test_y,(1,len(test_y)))   out = np.reshape(out,(OUT_CLASSES,len(test_y))) np.put_along_axis(out,np.array(index_arr),1,axis=0) test_y=cp.array(out.T)   weight1=cp.array(2*np.random.random((power1*int(train_x.size\/len(train_x)),HIDDEN_LEN))-1) weight2=cp.array(2*np.random.random((HIDDEN_LEN*power2,OUT_CLASSES))-1)  power1_arr = np.tile(np.arange(power1),train_x.size).reshape(train_x.size,power1) power2_arr = np.tile(np.arange(power2),HIDDEN_LEN*len(train_x)).reshape(HIDDEN_LEN*len(train_x),power2)  power1_arr_test = np.tile(np.arange(power1),test_x.size).reshape(test_x.size,power1) power2_arr_test = cp.array(np.tile(np.arange(power2),HIDDEN_LEN*len(test_x)).reshape(HIDDEN_LEN*len(test_x),power2))  train_x2=np.reshape(train_x,(train_x.size,1)) test_x2=np.reshape(test_x,(test_x.size,1))  virtual_train_x = cp.array(np.power(train_x2,power1_arr).reshape(len(train_x),int(power1*train_x.size\/len(train_x))))  virtual_test_x = cp.array(np.power(test_x2,power1_arr_test).reshape(len(test_x),int(power1*test_x.size\/len(test_x))))   someones = cp.array(np.ones(power1))  persent_train = cp.array(np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1)) persent_test = cp.array(np.ones(OUT_CLASSES).reshape(OUT_CLASSES,1))  max_persent = 0  error_test_list=[] error_train_list=[] error_test_list_persent=[] error_train_list_persent=[]   for step in range(EPOCHS):      hidden_layer = 1\/(1+cp.exp(-(cp.dot(virtual_train_x,weight1))))     hidden_layer2 = cp.reshape(hidden_layer,(hidden_layer.size,1))     virtual_hidden_layer_train = cp.power(hidden_layer2,cp.array(power2_arr)).reshape(len(hidden_layer),int(power2*hidden_layer.size\/len(hidden_layer)))     out_with_error = 1\/(1+cp.exp(-(cp.dot(virtual_hidden_layer_train,cp.array(weight2)))))     error_w2 = (cp.array(train_y)-out_with_error)     weight2+=SPEED_EDICATION*virtual_hidden_layer_train.T.dot(error_w2*out_with_error*(1-out_with_error))     error_w1 = error_w2.dot(weight2.T)      error_w1_reshaped = cp.reshape(error_w1,(int(error_w1.size\/power1),power1))     error_w1_virtual = cp.reshape(cp.dot(error_w1_reshaped,someones),(len(error_w1),int(error_w1.size\/power1\/len(error_w1))))       weight1+=SPEED_EDICATION*virtual_train_x.T.dot(error_w1_virtual)         hidden_layer_test = 1\/(1+cp.exp(-(cp.dot(virtual_test_x,weight1))))     hidden_layer2_test = cp.reshape(hidden_layer_test,(hidden_layer_test.size,1))     virtual_hidden_layer_test = cp.power(hidden_layer2_test,power2_arr_test).reshape(len(hidden_layer_test),int(power2*hidden_layer_test.size\/len(hidden_layer_test)))     out_with_error_test = 1\/(1+np.exp(-(np.dot(virtual_hidden_layer_test,weight2))))     <\/code><\/pre>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-325961","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325961"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325961\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}