рдХрд┐рддрд╛рдм "рдкрд╛рдпрдерди рдореЗрдВ рджреАрдк рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдиреЗред OpenAI рдЬрд┐рдо рдФрд░ TensorFlow рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП ┬╗

рдЫрд╡рд┐ рд╣рд╛рдп, рд╣рдмреНрд░реЛрдЬрд╝рд┐рддреЗрд▓реА! рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдХрд╛ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдЖрд╢рд╛рдЬрдирдХ рдХреНрд╖реЗрддреНрд░ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ рдкреНрд░реИрдХреНрдЯрд┐рдХрд▓ рд▓рд░реНрдирд┐рдВрдЧ рдЖрд░рдПрд▓ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдмреБрдирд┐рдпрд╛рджреА, рдмрд▓реНрдХрд┐ рд╕реБрджреГрдвреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЙрдиреНрдирдд рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рднреА рдорджрдж рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкреБрд╕реНрддрдХ рдПрдордУ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЧрд╣рд░реА рд╕реАрдЦрдиреЗ рдХреЗ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдЬреЛ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдиреЗ рдХреА рд╡рд┐рдзрд┐ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ рдХрд╛рдо рдХреЗ рдЕрдВрджрд░ рдпрд╛ рдмрд╛рд╣рд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдкреНрд░рдмрд▓рд┐рдд рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдмрдиреЗрдВред рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд, рдЧрдгрд┐рддреАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЬреНрдЮрд╛рди рдЖрдкрдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЕрдВрд╢ред LSTM RNN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреАрдд рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛


рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Zayn рдорд▓рд┐рдХ рдЧреАрдд рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LSTM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред Zane рдХреЗ рдЧрд╛рдиреЗ рдХреЗ рдмреЛрд▓ рдбреЗрдЯрд╛рд╕реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЖрдпрд╛рдд рд╕реЗ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:

import tensorflow as tf import numpy as np 

рдлрд┐рд░ рдЧреАрдд рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ:

 with open("Zayn_Lyrics.txt","r") as f: data=f.read() data=data.replace('\n','') data = data.lower() 

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбреЗрдЯрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 data[:50] "now i'm on the edge can't find my way it's inside " 

рдЕрдм рд╕рднреА рд╡рд░реНрдг рдЪрд░__рдЪрд░реНрдЪ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ:

 all_chars=list(set(data)) 

рдЕрджреНрд╡рд┐рддреАрдп рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЕрдиреВрдареЗ_рдЪрд░реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 unique_chars = len(all_chars) 

рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреБрд▓ total_chars рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 total_chars =len(data) 

рдкрд╣рд▓реЗ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЛ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рджреЗрддреЗ рд╣реИрдВред char_to_ix рдореЗрдВ рд╡рд░реНрдг рдХреА рдореИрдкрд┐рдВрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╣реЛрдЧреА, рдФрд░ ix_to_char рдореЗрдВ рдХреИрд░реЗрдХреНрдЯрд░ рдХреА рдореИрдкрд┐рдВрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╣реЛрдЧреА:

 char_to_ix = { ch:i for i,ch in enumerate(all_chars) } ix_to_char = { i:ch for i,ch in enumerate(all_chars) } 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 char_to_ix['e'] 9 ix_to_char[9] e 

рдлрд┐рд░ рдЬрдирд░реЗрдЯ_рдмреИрдЪ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрдирдкреБрдЯ рдФрд░ рд▓рдХреНрд╖реНрдп рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд▓рдХреНрд╖реНрдп рдорд╛рди рдЗрдирдкреБрдЯ рдореВрд▓реНрдп рдмрд╛рд░ i рдХреА рдкрд╛рд░реА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрдирдкреБрдЯ = [резреи,резрей,реирек] рез рдХреЗ рд╢рд┐рдлреНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде, рддреЛ рд▓рдХреНрд╖реНрдп рдорд╛рди [резрей,реирек] рд╣реЛрдЧрд╛:

 def generate_batch(seq_length,i): inputs = [char_to_ix[ch] for ch in data[i:i+seq_length]] targets = [char_to_ix[ch] for ch in data[i+1:i+seq_length+1]] inputs=np.array(inputs).reshape(seq_length,1) targets=np.array(targets).reshape(seq_length,1) return inputs,targets 

рд╣рдо рдЕрдиреБрдХреНрд░рдо рдХреА рд▓рдВрдмрд╛рдИ, рд╕реАрдЦрдиреЗ рдХреА рдЧрддрд┐ рдФрд░ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдиреНрдпреВрд░реЙрдиреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:

 seq_length = 25 learning_rate = 0.1 num_nodes = 300 

LSTM RNN рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред TensorFlow LSTM рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП BasicLSTMCell () рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ; рдЖрдкрдХреЛ LSTM рд╕реЗрд▓ рдореЗрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╣рдо LSTM рд╕реЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ tf.nn.dynamic_rnn () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕реЗрд▓ рдХреЗ рд╕рд╛рде RNN рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рд╕реНрдЯреЗрдЯ рд╡реИрд▓реНрдпреВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

 def build_rnn(x): cell= tf.contrib.rnn.BasicLSTMCell(num_units=num_nodes, activation=tf.nn.relu) outputs, states = tf.nn.dynamic_rnn(cell, x, dtype=tf.float32) return outputs,states 

рдЕрдм рдЗрдирдкреБрдЯ X рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдПрдВ рдФрд░ Y рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░реЗрдВ:

 X=tf.placeholder(tf.float32,[None,1]) Y=tf.placeholder(tf.float32,[None,1]) 

X рдФрд░ Y рдХреЛ int рдореЗрдВ рдмрджрд▓реЗрдВ:

 X=tf.cast(X,tf.int32) Y=tf.cast(Y,tf.int32) 

X рдФрд░ Y рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рднреА рдмрдирд╛рдПрдВ:

 X_onehot=tf.one_hot(X,unique_chars) Y_onehot=tf.one_hot(Y,unique_chars) 

Build_rnn рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ RNN рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рд╕реНрдЯреЗрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 outputs,states=build_rnn(X_onehot) 

рдЙрддреНрдкрд╛рджрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ:

 outputs=tf.transpose(outputs,perm=[1,0,2]) 

рд╣рдо рд╡рдЬрд╝рди рдФрд░ рдСрдлрд╝рд╕реЗрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 W=tf.Variable(tf.random_normal((num_nodes,unique_chars),stddev=0.001)) B=tf.Variable(tf.zeros((1,unique_chars))) 

рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╡рдЬрди рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдФрд░ рдСрдлрд╕реЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

 Ys=tf.matmul(outputs[0],W)+B 

рдЕрдм рд╣рдо рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд╕рдХреНрд░рд┐рдпрдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:

 prediction = tf.nn.softmax(Ys) 

Cross_entropy рдХреЗ рдиреБрдХрд╕рд╛рди рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреА рдЬрд╛рдПрдЧреА:

 cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels =Y_onehot,logits=Ys)) 

рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдиреБрдХрд╕рд╛рди рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд╛рд░ рдкреНрд░рд╕рд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рдВрд╢ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдВрдЧреЗ:

 optimiser = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(cro ss_entropy) 

рддрдм рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ RNN рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдЧрд▓реЗ рдЕрдиреБрдорд╛рдирд┐рдд рдкреНрд░рддреАрдХ рдХреЗ рд╕реВрдЪрдХ рджреЗрдЧрд╛:

 def predict(seed,i): x=np.zeros((1,1)) x[0][0]= seed indices=[] for t in range(i): p=sess.run(prediction,{X:x}) index = np.random.choice(range(unique_chars), p=p.ravel()) x[0][0]=index indices.append(index) return indices 

рдлрд┐рд░, рдмреИрдЪ_рд╕рд╛рдЗрдЬрд╝ рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░, рдкреИрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдпреБрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рдкреИрдХреЗрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд┐рдлреНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 batch_size=100 total_batch=int(total_chars//batch_size) epochs=1000 shift=0 

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ TensorFlow рд╕рддреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ:

 init=tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) for epoch in range(epoch): print("Epoch {}:".format(epoch)) if shift + batch_size+1 >= len(data): shift =0 #         # generate_batch,      shift, #    for i in range(total_batch): inputs,targets=generate_batch(batch_size,shift) shift += batch_size # calculate loss if(i%100==0): loss=sess.run(cross_entropy,feed_dict={X:inputs, Y:targets}) #      #    predict index =predict(inputs[0],200) #     ix_to_char #    txt = ''.join(ix_to_char[ix] for ix in index) print('Iteration %i: '%(i)) print ('\n %s \n' % (txt, )) sess.run(optimiser,feed_dict={X:inputs,Y:targets}) 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдо рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдпреБрдЧ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реАрдЦрддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░ рд╣реЛрддреЗ рд╣реИрдВ:

 Epoch 0: Iteration 0: wsadrpud,kpswkypeqawnlfyweudkgt,khdi nmgof' u vnvlmbis . snsblp,podwjqehb,e;g- 'fyqjsyeg,byjgyotsrdf;;u,ha;ik'sfc;dvtauofd.,q.;npsw'wjy-quw'quspfqw- . . . Epoch 113: Iteration 0: i wanna see you, yes, and she said yes! 

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд╕реБрдзрд░рд╛рд╕рди рд░рд╡рд┐рдЪрдВрджреНрд░рди рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ, рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдХреЗ рдЙрддреНрд╕рд╛рд╣реА рдкреНрд░рд╢рдВрд╕рдХ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдмреНрд▓реЙрдЧрд░ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдРрдиреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рд╕реНрдирд╛рддрдХ рдХреА рдбрд┐рдЧреНрд░реА рд╣рд╛рд╕рд┐рд▓ рдХреА рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рд╕рд╣рд┐рдд рдЧрд╣рди рд╕реАрдЦрдиреЗ рдФрд░ рдкреНрд░рдмрд▓рд┐рдд рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╢реЛрдз рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВред рдкрд╣рд▓реЗ рдПрдХ рдлреНрд░реАрд▓рд╛рдВрд╕ рд╡реЗрдм рдбрд┐рдЬрд╛рдЗрдирд░ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдХрдИ рдкреБрд░рд╕реНрдХрд╛рд░ рд╡рд┐рдЬреЗрддрд╛ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ред рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред

рд╡рд┐рдЬреНрдЮрд╛рди рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд╕реБрдЬреАрдд рдкрд╛рд▓ рдПрд▓реНрд╕реЗрд╡рд┐рдпрд░ рд▓реИрдмреНрд╕ рдореЗрдВ рддрдХрдиреАрдХреА рдЕрдиреБрд╕рдВрдзрд╛рди рдирд┐рджреЗрд╢рдХ, рд░реАрдб-рдПрд▓реНрд╕реЗрд╡рд┐рдпрд░ рдЧреНрд░реБрдк рдХреА рдирд╡реАрдирддрдо рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рд╣реИред рд╡рд╣ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЦреЛрдЬ, рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдорд╢реАрди рдФрд░ рдЧрд╣рди рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдиреБрд╕рдВрдзрд╛рди рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВред рдПрд▓реНрд╕реЗрд╡рд┐рдпрд░ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рдкрд╣рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЦреЛрдЬ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛, рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдирд╛ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛, рдПрдиреЛрдЯреЗрдЯ рдХрд░рдирд╛ рдФрд░ рдЪрд┐рдХрд┐рддреНрд╕рд╛ рдФрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдПрдВрдереЛрд▓реЙрдЬреА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдВрдЯреЛрдирд┐рдпреЛ рдЧреБрд▓реНрд▓реА рдХреЗ рд╕рд╛рде рдПрдХ рдЧрд╣рди рдЕрдзреНрдпрдпрди рдкреБрд╕реНрддрдХ рд▓рд┐рдЦреА рдФрд░ рдЕрдкрдиреЗ рд╕реИрд▓реНрдорди рд░рди рдмреНрд▓реЙрдЧ рдкрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ред

рд╕реВрд░реНрдпрд╛рджреАрдкрди рд░рд╛рдордореВрд░реНрддрд┐ рднрд╛рд░рдд рдХреЗ рдкрд╛рдВрдбрд┐рдЪреЗрд░реА рдореЗрдВ рдПрдЖрдИ рд╢реЛрдзрдХрд░реНрддрд╛ рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╕реЗ рдПрдХ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐ рд╢реЛрдзрдХрд░реНрддрд╛ рдФрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВред рдЙрдирдХреЗ рдХрд╛рдо рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рддрд░реНрдХ рдмрдирд╛рдирд╛ рд╣реИред рд╡рд╣ рдПрдХ рдЧрд╣рд░реЗ рд╕реАрдЦрдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдПрд╕рдПрдПрдПрдордП рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ рдореЗрдВ, рд╡рд╣ рдмрд╛рдпреЛрдореЗрдбрд┐рдХрд▓ рдЧреНрд░рдВрдереЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдкреНрд░рдмрд▓ рд╕рдорд░реНрдердХ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рд╡рд╣ рдПрдлрдПрд╕рдПрдлрдЯреАрдПрди рд╕рдореБрджрд╛рдп рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВред рд╡рд╣ рд╕рд╣рдпреЛрдЧреА рдиреЗрдЯрд╡рд░реНрдХ, рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рднреА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред

┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗ рд╕рд╛рдордЧреНрд░реА
┬╗ рдЕрдВрд╢

рдлреЗрд░реАрд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреВрдкрди рдкрд░ 25% рдХреА рдЫреВрдЯ - рдкрд╛рдпрдерди

рдкреБрд╕реНрддрдХ рдХреЗ рдкреЗрдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рднреБрдЧрддрд╛рди рдкрд░, рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред

Source: https://habr.com/ru/post/hi465605/


All Articles