i want to calcul the forward hidden markov
``````IndexError                                Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_22004\4114403535.py in <module>
----> 1 baum_welch(v, A, B, PI, n_iter=100)

~\AppData\Local\Temp\ipykernel_22004\1962654577.py in baum_welch(V, a, b, initial_distribution, n_iter)
4
5     for n in range(n_iter):
----> 6         alpha = forward(V, a, b, initial_distribution)
7         beta = backward(V, a, b)
8

~\AppData\Local\Temp\ipykernel_22004\4009087898.py in forward(V, a, b, initial_distribution)
1 def forward(V, a, b, initial_distribution):
2     alpha = np.zeros((V.shape[0], a.shape[0]))
----> 3     alpha[0, :] = initial_distribution * b[:, V[0]]
4
5     for t in range(1, V.shape[0]):

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
``````
``````import numpy as np

def forward(V, a, b, initial_distribution):
alpha = np.zeros((V.shape[0], a.shape[0]))
alpha[0, :] = initial_distribution * b[:, V[0]]

for t in range(1, V.shape[0]):
for j in range(a.shape[0]):
# Matrix Computation Steps
#                  ((1x2) . (1x2))      *     (1)
#                        (1)            *     (1)
alpha[t, j] = alpha[t - 1].dot(a[:, j]) * b[j, V[t]]

return alpha
``````