我们从Python开源项目中,提取了以下7个代码示例,用于说明如何使用tensorflow.bitcast()。
def decode_from_ternary_gradients(grads_and_vars, scalers, shapes): """Decode each gradient tensor.""" with tf.name_scope('ternary_decoder'): gradients, variables = zip(*grads_and_vars) floating_gradients = [] for gradient, variable, scaler, shape in zip(gradients, variables, scalers, shapes): if gradient is None: floating_gradients.append(None) # gradient is encoded, so we use variable to check its size # We also assume dtype of variable and gradient is the same floating_gradient = tf.cond(tf.size(variable) < FLAGS.size_to_binarize, lambda: tf.bitcast(gradient, variable.dtype), lambda: ternary_decoder(gradient, scaler, shape)) floating_gradients.append(floating_gradient) return list(zip(floating_gradients, variables))
def _quantize(x, params, randomize=True): """Quantize x according to params, optionally randomizing the rounding.""" if not params.quantize: return x if not randomize: return tf.bitcast( tf.cast(x / params.quantization_scale, tf.int16), tf.float16) abs_x = tf.abs(x) sign_x = tf.sign(x) y = abs_x / params.quantization_scale y = tf.floor(y + tf.random_uniform(tf.shape(x))) y = tf.minimum(y, tf.int16.max) * sign_x q = tf.bitcast(tf.cast(y, tf.int16), tf.float16) return q
def _quantize(x, params, randomize=True): """Quantize x according to params, optionally randomizing the rounding.""" if not params.quantize: return x if not randomize: return tf.bitcast( tf.cast(x / params.quantization_scale, tf.int16), tf.float16) abs_x = tf.abs(x) sign_x = tf.sign(x) y = abs_x / params.quantization_scale y = tf.floor(y + tf.random_uniform(common_layers.shape_list(x))) y = tf.minimum(y, tf.int16.max) * sign_x q = tf.bitcast(tf.cast(y, tf.int16), tf.float16) return q
def encode_to_ternary_gradients(grads_and_vars, get_shape=False): """Encode each gradient tensor.""" with tf.name_scope('ternary_encoder'): gradients, variables = zip(*grads_and_vars) ternary_gradients = [] gradient_shapes = [] for gradient in gradients: if gradient is None: ternary_gradients.append(None) if get_shape: gradient_shapes.append(None) continue if get_shape: if isinstance(gradient, tf.IndexedSlices): gradient_shape = gradient.dense_shape else: gradient_shape = gradient.get_shape() gradient_shapes.append(gradient_shape) ternary_gradient = tf.cond(tf.size(gradient) < FLAGS.size_to_binarize, lambda: tf.bitcast(gradient, type=tf.uint8), lambda: ternary_encoder(gradient)) ternary_gradients.append(ternary_gradient) if get_shape: return list(zip(ternary_gradients, variables)), gradient_shapes else: return list(zip(ternary_gradients, variables))
def _dequantize(q, params): """Dequantize q according to params.""" if not params.quantize: return q return tf.to_float(tf.bitcast(q, tf.int16)) * params.quantization_scale
def bottom(self, inputs): """Transform input from data space to model space. Args: inputs: A Tensor with shape [batch, ...] Returns: body_input: A Tensor with shape [batch, ?, ?, body_input_depth]. """ with tf.variable_scope(self.name): # TODO(aidangomez): Will need to sort out a better audio pipeline def xnet_resblock(x, filters, res_relu, name): with tf.variable_scope(name): # We only stride along the length dimension to preserve the spectral # bins (which are tiny in dimensionality relative to length) y = common_layers.separable_conv_block( x, filters, [((1, 1), (3, 3)), ((1, 1), (3, 3))], first_relu=True, padding="SAME", force2d=True, name="sep_conv_block") y = common_layers.pool(y, (3, 3), "MAX", "SAME", strides=(2, 1)) return y + common_layers.conv_block( x, filters, [((1, 1), (1, 1))], padding="SAME", strides=(2, 1), first_relu=res_relu, force2d=True, name="res_conv0") # Bitcast back from int32 x = tf.bitcast(inputs, tf.float32) x.set_shape([None, None, None, 1]) for i in xrange(self._model_hparams.audio_compression): x = xnet_resblock(x, 2**(i + 1), True, "compress_block_%d" % i) return xnet_resblock(x, self._body_input_depth, False, "compress_block_final")