in lm_human_preferences/utils/core.py [0:0]
def map_flat_bits(f, values):
"""Apply the function f to bit-concatenated values, then convert back to original shapes and dtypes."""
values = [tf.convert_to_tensor(v) for v in values]
def maybe_bitcast(v, dtype):
cast = tf.cast if tf.bool in (v.dtype, dtype) else tf.bitcast
return cast(v, dtype)
bits = [maybe_bitcast(v, tf.uint8) for v in values]
flat = tf.concat([tf.reshape(b, [-1]) for b in bits], axis=0)
flat = f(flat)
parts = tf.split(flat, [tf.size(b) for b in bits])
return [maybe_bitcast(tf.reshape(p, tf.shape(b)), v.dtype)
for p, v, b in zip(parts, values, bits)]