The trainable argument in the batch_norm op should be replaced with is_trainable.
I think the starting convolution layer is incorrect. In my opinion, this stride should be [1, 1, ,1, 1] instead of [1, 1, embedding_size, 1], and padding=Valid instead of padding=Same should be used.