digraph "Forward Pass" {
	fontsize=12 rankdir=LR
	Xb [label=Xb]
	C [label="C (Embedding Matrix)"]
	emb [label=emb]
	embcat [label=embcat]
	Xb -> emb
	C -> emb
	emb -> embcat
	W1 [label=W1]
	b1 [label=b1]
	hprebn [label=hprebn]
	embcat -> hprebn [label="@"]
	W1 -> hprebn
	b1 -> hprebn
	bnmeani [label=bnmeani]
	bndiff [label=bndiff]
	bndiff2 [label="bndiff²"]
	bnvar [label=bnvar]
	bnvar_inv [label=bnvar_inv]
	bnraw [label=bnraw]
	bngain [label=bngain]
	bnbias [label=bnbias]
	hpreact [label=hpreact]
	hprebn -> bnmeani [label=mean]
	hprebn -> bndiff
	bnmeani -> bndiff
	bndiff -> bndiff2
	bndiff2 -> bnvar [label="sum/(n-1)"]
	bnvar -> bnvar_inv [label="(x+eps)^-0.5"]
	bndiff -> bnraw
	bnvar_inv -> bnraw
	bnraw -> hpreact
	bngain -> hpreact
	bnbias -> hpreact
	h [label="h = tanh(hpreact)"]
	hpreact -> h
	W2 [label=W2]
	b2 [label=b2]
	logits [label=logits]
	h -> logits [label="@"]
	W2 -> logits
	b2 -> logits
	logit_maxes [label=logit_maxes]
	norm_logits [label=norm_logits]
	counts [label=counts]
	counts_sum [label=counts_sum]
	counts_sum_inv [label=counts_sum_inv]
	probs [label=probs]
	logprobs [label=logprobs]
	loss [label=loss]
	logits -> logit_maxes [label=max]
	logits -> norm_logits
	logit_maxes -> norm_logits
	norm_logits -> counts [label=exp]
	counts -> counts_sum [label=sum]
	counts_sum -> counts_sum_inv [label="^-1"]
	counts -> probs
	counts_sum_inv -> probs
	probs -> logprobs [label=log]
	logprobs -> loss [label=NLL]
}
