Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 12, 2014 19:33:43

vladimircape
Зарегистрирован: 2014-08-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

matrices are not aligned

Добрый день, подскажите
Ну никак получается привести к необходимому виду

def sigmoid(X):
	den = 1.0 + e ** (-1.0 * X) 
	d = 1.0 / den	 
	return d
def compute_grad(theta,x,y,lambd):
	""" Calculate the gradient of J:
	grad = 1 / m * (X' * (sigmoid(X * theta) - y))
	grad(2 : end) += lambda / m * theta(2 : end)
	"""
	m = x.shape[0]	
	x_bias = hstack((ones((m, 1)), x))	
	theta = atleast_2d(theta).transpose()
	grad = 1.0 / m * (dot(x_bias.transpose(), sigmoid(dot(x_bias, theta)) - y))
	grad[1 : :] += lambd / m * theta[1 : :]
	return grad.ravel()	
data = loadtxt('ex2data2.txt', delimiter=',')
x = data[:, 0:2]
y = data[:, 2]
lambd = 0.1
m = x.shape[0]
initial_theta = zeros(shape=(x.shape[1], 1)) 
compute_grad(initial_theta,x,y,lambd)
вот здесь ругается
x_bias = hstack((ones((m, 1)), x))	

Прикреплённый файлы:
attachment ex2data2.txt (2,2 KБ)

Офлайн

#2 Сен. 12, 2014 19:41:26

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

matrices are not aligned

А где начало программы, где Traceback? Почему не PyBrain?

Офлайн

#3 Сен. 12, 2014 20:16:41

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

matrices are not aligned

Никаких ошибок не наблюдаю. Проверьте файл с данными.

>>> import numpy
>>> data = numpy.loadtxt('ex2data2.txt', delimiter=',')
>>> x = data[:, 0: 2]
>>> y = data[:, 2]
>>> lambd = 0.1
>>> m = x.shape[0]
>>> initial_theta = numpy.zeros(shape=(x.shape[1], 1))
>>> x_bias = numpy.hstack((numpy.ones((m, 1)), x))
>>> theta = numpy.atleast_2d(initial_theta).transpose()

Отредактировано Alen (Сен. 12, 2014 20:17:33)

Офлайн

#4 Сен. 13, 2014 00:28:13

vladimircape
Зарегистрирован: 2014-08-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

matrices are not aligned

Alen
Никаких ошибок не наблюдаю. Проверьте файл с данными.
Файл с данными во вложении к первому сообщению там всё верно
Вот моя ошибка
Traceback (most recent call last):
File “H:\!ai\log2.py”, line 24, in <module>
compute_grad(initial_theta,x,y,lambd)
File “H:\!ai\log2.py”, line 15, in compute_grad
grad = 1.0 / m * (dot(x_bias.transpose(), sigmoid(dot(x_bias, theta)) - y))
ValueError: matrices are not aligned

Офлайн

#5 Сен. 13, 2014 09:23:12

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

matrices are not aligned

Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором. У Вас же умножаются матрицы 118х3 на 1х2:

 
>>> x_bias.shape
(118, 3)
>>> theta.shape
(1, 2)
>>> dot(x_bias, theta)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: matrices are not aligned

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version