Почему точечные продукты отстают в SVM Стэнфорда cs231n? - PullRequest
0 голосов
/ 10 ноября 2018

Я смотрю видео на YouTube cs231n Стэнфорда и пытаюсь выполнять задания в качестве упражнения. При создании SVM я наткнулся на следующий фрагмент кода:

def svm_loss_naive(W, X, y, reg):
  """
  Structured SVM loss function, naive implementation (with loops).

  Inputs have dimension D, there are C classes, and we operate on minibatches
  of N examples.

  Inputs:
  - W: A numpy array of shape (D, C) containing weights.
  - X: A numpy array of shape (N, D) containing a minibatch of data.
  - y: A numpy array of shape (N,) containing training labels; y[i] = c means
    that X[i] has label c, where 0 <= c < C.
  - reg: (float) regularization strength

  Returns a tuple of:
  - loss as single float
  - gradient with respect to weights W; an array of same shape as W
  """
  dW = np.zeros(W.shape) # initialize the gradient as zero

  # compute the loss and the gradient
  num_classes = W.shape[1]
  num_train = X.shape[0]
  loss = 0.0
  for i in range(num_train):
    scores = X[i].dot(W) # This line
    correct_class_score = scores[y[i]]
    for j in range(num_classes):
      if j == y[i]:
        continue
      margin = scores[j] - correct_class_score + 1 # note delta = 1
      if margin > 0:
        loss += margin

Вот линия, с которой у меня проблемы:

scores = X[i].dot(W) 

Это делает продукт xW, разве это не Wx? под этим я подразумеваю W.dot(X[i])

1 Ответ

0 голосов
/ 10 ноября 2018

Поскольку формы массива равны (D, C) и (N, D) для W и X соответственно, вы не можете взять точечное произведение напрямую, не перенеся сначала их обоих (они должны быть (C, D)·(D, N) для умножения матриц) .

Начиная с X.T.dot(W.T) == W.dot(X), реализация просто меняет порядок точечного произведения, а не на преобразование каждого массива. По сути, это сводится к решению о том, как расположены входы. В этом случае (несколько произвольно) было принято решение расположить образцы и элементы более интуитивно понятным способом, а не иметь точечное произведение как x·W.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...