code: def tpu_conv1d(inputs, filters, kernel_size, padding="SAME", name="tpu_conv1d"):
    
    if kernel_size == 1:
      return dense(inputs, filters, name=name, use_bias=True)
    if padding == "SAME":
      assert kernel_size % 2 == 1
      first_offset = -((kernel_size - 1) // 2)
    else:
      assert padding == "LEFT"
      first_offset = -(kernel_size - 1)
    last_offset = first_offset + kernel_size - 1
    results = []
    padded = tf.pad(inputs, [[0, 0], [-first_offset, last_offset], [0, 0]])
    for i in range(kernel_size):
      shifted = tf.slice(padded, [0, i, 0], tf.shape(inputs)) if i else inputs
      shifted.set_shape(inputs.get_shape())
      results.append(
          dense(shifted, filters, use_bias=(i == 0), name=name + "_%d" % i))
    ret = tf.add_n(results)
    ret *= kernel_size**-0.5
    return ret
docs: Version of conv1d that works on TPU (as of 11/2017).
  
    Args:
      inputs: a Tensor with shape [batch, length, input_depth].
      filters: an integer.
      kernel_size: an integer.
      padding: a string - "SAME" or "LEFT".
      name: a string.
  
    Returns:
      a Tensor with shape [batch, length, filters].