def generate_comment(model, seed, segment_size, temperature=1.0): def sample_func(a): a = a.astype('float64') a = numpy.log(a) / temperature a = numpy.exp(a) / numpy.sum(numpy.exp(a)) try: v = numpy.random.multinomial(1, a) except ValueError: v = numpy.random.multinomial(1, a/2) return numpy.argmax(v) comment = bytearray() buf = prep_seed(seed, segment_size) while True: pred = model.predict(buf, verbose=0)[0] next_byte = sample_func(pred) if next_byte == 0: break comment.append(next_byte) buf[:-1] = buf[1:] buf[-1] = byte2vec(next_byte) return comment.decode('latin-1')
def prep_seed(seed, segment_size): seed = bytearray(seed[-(segment_size - 1):] + '\x00') X_p = numpy.zeros((1, segment_size, CHAR_WIDTH), dtype=numpy.bool) for i in range(segment_size): X_p[0, i] = byte2vec(seed[i]) return X_p