рд╕реАрдХреНрд╡реЗрдВрд╕-рдЯреВ-рд╕реАрдХреНрд╡реЗрдВрд╕ рдкрд╛рд░реНрдЯ 2 рдореЙрдбрд▓

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

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

рдЗрд╕ рдмреАрдЪ, рд╣рдо рдореЙрдбрд▓ рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рдЧрдПред

рддрдВрддреНрд░рд┐рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдореЙрдбрд▓

рдЬрдмрдХрд┐ рдЕрдиреБрдХреНрд░рдо-рд╕реЗ-рдЕрдиреБрдХреНрд░рдо рдореЙрдбрд▓ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ tensorflow/tensorflow/python/ops/seq2seq.py рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдЕрдиреБрд╡рд╛рдж рдореЙрдбрд▓ рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдЯреНрд░рд┐рдХреНрд╕ models/tutorials/rnn/translate/seq2seq_model.py рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред



рд╕реИрдореНрдкрд▓ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдмрдбрд╝реЗ рдЖрдЙрдЯрдкреБрдЯ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реИрдВрдкрд▓реНрдб рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреЛрдиреЛрдВ рд╕реИрдВрдкрд▓реНрдб рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд▓реЙрд╕ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди seq2seq_model.py рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред

 if num_samples > 0 and num_samples < self.target_vocab_size: w_t = tf.get_variable("proj_w", [self.target_vocab_size, size], dtype=dtype) w = tf.transpose(w_t) b = tf.get_variable("proj_b", [self.target_vocab_size], dtype=dtype) output_projection = (w, b) def sampled_loss(labels, inputs): labels = tf.reshape(labels, [-1, 1]) # We need to compute the sampled_softmax_loss using 32bit floats to # avoid numerical instabilities. local_w_t = tf.cast(w_t, tf.float32) local_b = tf.cast(b, tf.float32) local_inputs = tf.cast(inputs, tf.float32) return tf.cast( tf.nn.sampled_softmax_loss( weights=local_w_t, biases=local_b, labels=labels, inputs=local_inputs, num_sampled=num_samples, num_classes=self.target_vocab_size), dtype) 

рдкрд╣рд▓реЗ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╕реИрдВрдкрд▓ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ рдпрджрд┐ рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 512) рд▓рдХреНрд╖реНрдп рд╢рдмреНрджрдХреЛрд╢ рдЖрдХрд╛рд░ рд╕реЗ рдХрдо рд╣реИред 512 рд╕реЗ рдЫреЛрдЯреЗ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рд╣рд╛рдирд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдлрд┐рд░, рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдПрдХ рдкреНрд░рдХреНрд╖реЗрдкрдг рдмрдирд╛рдПрдВред рдпрд╣ рдПрдХ рдЬреЛрдбрд╝реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡реЗрдЯ рдХрд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдПрдХ рд╡рд┐рд╕реНрдерд╛рдкрди рд╡реЗрдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ rnn рд╕реЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╡реИрдХреНрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рди рдХрд┐ target_vocab_size рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рд▓реЙрдЧ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡реЗрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдСрдлрд╕реЗрдЯ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ seq2seq_model.py рдореЗрдВ seq2seq_model.py рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

 if output_projection is not None: for b in xrange(len(buckets)): self.outputs[b] = [tf.matmul(output, output_projection[0]) + output_projection[1] for ...] 

рдмрдХреЗрдЯрд┐рдВрдЧ рдФрд░ рдкреИрдбрд┐рдВрдЧ

рд╕реИрдВрдкрд▓ рдХрд┐рдП рдЧрдП рд╕реЙрдлреНрдЯрдореИрдХреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдЕрдиреБрд╡рд╛рдж рдореЙрдбрд▓ рдореЗрдВ рдмрдХреЗрдЯрд┐рдВрдЧ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рд╡рд╛рдХреНрдпреЛрдВ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВред рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдлреНрд░реЗрдВрдЪ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рдХреЗ рдПрд▓ 1 рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдп рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рдХреЗ рдПрд▓ 1 рдХреЗ рдлреНрд░реЗрдВрдЪ рд╡рд╛рдХреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдп рдХреЛ encoder_inputs рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ encoder_inputs , рдФрд░ рдлреНрд░реЗрдВрдЪ рд╡рд╛рдХреНрдп рдХреЛ decoder_inputs (рдЬреАрдУ рдкреНрд░рддреАрдХ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде) рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдВрдЧреНрд░реЗрдЬреА рдФрд░ рдлреНрд░реЗрдВрдЪ рд╡рд╛рдХреНрдпреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реЗ (L1, L + + 1) рдХреЗ рд▓рд┐рдП seq2seq рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХрдИ рд╕рдорд╛рди рдЙрдкрдЧреНрд░рд╣реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЧреНрд░рд╛рдл рдорд┐рд▓рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рд╣рдо рд╡рд┐рд╢реЗрд╖ рдкреИрдб рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рдХреНрдп рдХреЛ "рдкреИрдб" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ "рдкреИрдХ" рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ seq2seq рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕реЗ рдореЙрдбрд▓ рдЫреЛрдЯреЗ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рдЕрдкреНрд░рднрд╛рд╡реА рд╣реЛрдВрдЧреЗ - рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЗрдХрд╛рд░ PAD рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдирдХреЛрдб рдФрд░ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд▓рдВрдмрд╛рдИ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рд╣реА рд▓рдВрдмрд╛рдИ рдХреА рд╕реНрдЯрдлрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордЭреМрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд╛рд▓реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рдХреНрдп рдХреЛ рд╕рдореВрд╣ рдХреА рд▓рдВрдмрд╛рдИ рддрдХ рд╕рд╛рдорд╛рди рдХрд░рддреЗ рд╣реИрдВред translate.py рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

 buckets = [(5, 10), (10, 15), (20, 25), (40, 50)] 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ 3 рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдп рдЗрдирдкреБрдЯ рдкрд░ рдЖрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рдлреНрд░рд╛рдВрд╕реАрд╕реА рд╡рд╛рдХреНрдп рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ 6 рдЯреЛрдХрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рд╡реЗ рдкрд╣рд▓реЗ рд╕рдореВрд╣ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдПрдиреНрдХреЛрдбрд░ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рд▓рдВрдмрд╛рдИ 5 рддрдХ рднрд░реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдбрд┐рдХреЛрдбрд░ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рд▓рдВрдмрд╛рдИ 10 рд╣реЛрдЧреАред рдФрд░ рдЕрдЧрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ 8 рдЯреЛрдХрди рд╣реИрдВ, рдФрд░ рдЗрд╕реА рдлреНрд░рд╛рдВрд╕реАрд╕реА 18 рдореЗрдВ, рд╡реЗ рд╕рдореВрд╣ (10, 15) рдореЗрдВ рдирд╣реАрдВ рдЧрд┐рд░реЗрдВрдЧреЗ рдФрд░ рд╕рдореВрд╣ (20, 25) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЕрд░реНрдерд╛рдд, рдЕрдВрдЧреНрд░реЗрдЬреА рдкреНрд░рд╕реНрддрд╛рд╡ 20 рдЯреЛрдХрди рддрдХ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлреНрд░реЗрдВрдЪ рдПрдХ рд╕реЗ 25 рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдбрд┐рдХреЛрдбрд░ рдЗрдирдкреБрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдЗрдирдкреБрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ GO рд╡рд░реНрдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ get_batch() рдореЗрдВ get_batch() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ seq2seq_model.py , рдЬреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдп рдХреЛ рднреА рдлрд╝реНрд▓рд┐рдк рдХрд░рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдХреЗ рдлрд╝реНрд▓рд┐рдкрд┐рдВрдЧ рдиреЗ Sutskever et alред, 2014 (pdf) рдХреЗ рддрдВрддреНрд░рд┐рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдореЙрдбрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреА ред рдЕрдВрддрддрдГ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рд╡рд╛рдХреНрдп рд╣реИ "рдореИрдВ рдЬрд╛рддрд╛ рд╣реВрдВред" рдЗрдирдкреБрдЯ рдкрд░, рдЯреЛрдХрди рдЯреВрдЯ рдЧрдпрд╛ ["I", "go", "."] , рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ рд╡рд╛рдХреНрдп рд╣реИ "рдЬреЗрдИ рд╡реИрд╕ред", рдЯреЛрдХрди рдХреЛ рдЯреВрдЯ рдЧрдпрд╛ ["Je", "vais", "."] ред рдЙрдиреНрд╣реЗрдВ рдЗрдирдкреБрдЯ рдПрдирдХреЛрдбрд░ [PAD PAD "." "go" "I"] рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ (5, 10) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ [PAD PAD "." "go" "I"] [PAD PAD "." "go" "I"] рдФрд░ рдбрд┐рдХреЛрдбрд░ рдЗрдирдкреБрдЯ [GO "Je" "vais" "." EOS PAD PAD PAD PAD PAD] [GO "Je" "vais" "." EOS PAD PAD PAD PAD PAD] ред

рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдмрдбрд╝реЗ рдПрдВрдЧреНрд▓реЛ-рдлреНрд░реЗрдВрдЪ рдХреЛрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдо WMT'15 рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ 10 ^ 9 рдлреНрд░реЗрдВрдЪ-рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рд╣реА рдирдореВрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рд╛рдЗрдЯ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЕрдЧрд▓рд╛ рдЖрджреЗрд╢ рдЪрд▓рдиреЗ рдкрд░ рджреЛрдиреЛрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ train_dir рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 python translate.py --data_dir [your_data_directory] --train_dir [checkpoints_directory] --en_vocab_size=40000 --fr_vocab_size=40000 

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рднрд╡рди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ 18GB рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреА рдЬрдЧрд╣ рдФрд░ рдХрдИ рдШрдВрдЯреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреЗрд╕ data_dir, , рдбрд┐рдХреНрд╢рдирд░реА рдлрд╛рдЗрд▓реНрд╕ data_dir, рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ data_dir, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗрд╕ рдХреЛ рдЯреЛрдХрди рдХрд░рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 40,000 рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╢рдмреНрдж рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ UNK рдЯреЛрдХрди рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рдмрд╛рдЗрдирд░реА рдЯреЛрдХрди-рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реБрдзрд╛рд░ рджреЗрдЧрд╛ред рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

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

 python translate.py --data_dir [your_data_directory] --train_dir [checkpoints_directory] --size=256 --num_layers=2 --steps_per_checkpoint=50 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдореЗрдВ рджреЛ рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 3 рд╣реИрдВ), рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 256 рдЗрдХрд╛рдЗрдпрд╛рдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ - 1024) рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ 50 рдЪрд░рдгреЛрдВ рдкрд░ рдПрдХ рдЪреМрдХреА рдХреЗ рд╕рд╛рде (рдбрд┐рдлрд╝реЙрд▓реНрдЯ - 200)ред рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЗ GPU рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдЖрдХрд╛рд░ рдореЙрдбрд▓ рд╕рд╣реА рд╣реИред

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, steps_per_checkpoin t рдмрд╛рдЗрдирд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдХреЗ рдЖрдВрдХрдбрд╝реЗ рджреЗрдВрдЧреЗред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ (рдЖрдХрд╛рд░ 1024 рдХреА 3 рдкрд░рддреЗрдВ) рдХреЗ рд╕рд╛рде, рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 global step 200 learning rate 0.5000 step-time 1.39 perplexity 1720.62 eval: bucket 0 perplexity 184.97 eval: bucket 1 perplexity 248.81 eval: bucket 2 perplexity 341.64 eval: bucket 3 perplexity 469.04 global step 400 learning rate 0.5000 step-time 1.38 perplexity 379.89 eval: bucket 0 perplexity 151.32 eval: bucket 1 perplexity 190.36 eval: bucket 2 perplexity 227.46 eval: bucket 3 perplexity 238.66 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ 1.4 рд╕реЗрдХрдВрдб рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдХреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдореВрдиреЗ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИред рд▓рдЧрднрдЧ 30 рд╣рдЬрд╛рд░ рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЫреЛрдЯреЗ рд╡рд╛рдХреНрдпреЛрдВ рдХреЗ рд╕рдореВрд╣ (0 рдФрд░ 1) рдХреИрд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рднрд╡рди рдореЗрдВ рд▓рдЧрднрдЧ 22 рдорд┐рд▓рд┐рдпрди рд╡рд╛рдХреНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд░рди) 64 рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 340 рд╣рдЬрд╛рд░ рдХрджрдо рдЙрдард╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдореЙрдбрд▓ рдХреЛ --decode рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдпреЛрдВ рдХрд╛ рдлреНрд░реЗрдВрдЪ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 python translate.py --decode --data_dir [your_data_directory] --train_dir [checkpoints_directory] Reading model parameters from /tmp/translate.ckpt-340000 > Who is the president of the United States? Qui est le pr├йsident des ├Йtats-Unis ? 

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо prim_ tokenization рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, basic_tokenizer рдореЗрдВ data_utils рдХрд╛ рдореВрд▓ рдХрд╛рд░реНрдпред WMT'15 рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдмреЗрд╣рддрд░ рдЯреЛрдХрди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрдбрд╝рд╛ рд╢рдмреНрджрдХреЛрд╢, рддреЛ рдЖрдк рдмреЗрд╣рддрд░ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреБрд╡рд╛рдж рдореЙрдбрд▓ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдк рдореЙрдбрд▓ рднрд╛рд░ рдХреЗ рд╕реАрдЦрдиреЗ рдХреА рдЧрддрд┐, рдХреНрд╖реАрдгрди, рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк seq2seq_model.py рдореЗрдВ рдорд╛рдирдХ GradientDescentOptimizer рдХреЛ рдХреБрдЫ рдФрд░ рдЙрдиреНрдирдд рдЬреИрд╕реЗ AdagradOptimizer рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ!

рдЕрдВрдд рдореЗрдВ, рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрдХреНрд░рдо-рд╕реЗ-рдЕрдиреБрдХреНрд░рдо рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рдЕрдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЙрдбрд▓ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдиреАрд▓реНрд╕ рдПрдВрдб рдХреИрд╕рд░ рдПрдЯ рдЕрд▓, 2014 (рдкреАрдбреАрдПрдл) рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдк рди рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ, рдмрд▓реНрдХрд┐ рдПрдХ рдкрд╛рд░реНрд╕рд░, рдЪреИрдЯ рдмреЙрдЯ рдпрд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреНрд░рдпреЛрдЧ!

рд╡рд╣ рд╕рдм рд╣реИ!

рд╣рдо рдпрд╣рд╛рдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рд╣рдо рдЖрдкрдХреЛ рдПрдХ рдЦреБрд▓реЗ рдкрд╛рда рдореЗрдВ рдЙрдирдХреЗ рд╢рд┐рдХреНрд╖рдХ рд╕реЗ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

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


All Articles