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