Как использовать [закрытую] Лицензию Open Source

Прежде всего, никогда в будущем просто не создавайте свой код! Ваш пост (код + объяснение) должен быть настолько описательным, насколько это возможно! (не многословно, никто не будет читать это). Вот что делает ваш код! Пожалуйста, опубликуйте читаемый код в будущем! Иначе трудно читать & amp; ответ!

def computeCost(X,y,theta):
    '''
     Using Mean Absolute Error

     X:(100,3)
     y: (100,1)
     theta:(3,1)
     Returns 1D matrix of predictions
     Cost = ( log(predictions) + (1-labels)*log(1-predictions) ) / len(labels)
     '''
    m = len(y)
    # calculate the prediction
    predictions = sigmoid(np.dot(X,theta))

    # error for when label is of class1
    class1_cost= -y * np.log(predictions)
    # error for when label is of class1
    class2_cost= (1-y)*np.log(1-predictions)
    # total cost
    cost = class1_cost-class2_cost
    # averaging cost
    cost =cost.sum() / m
    return cost

Сначала вы должны понять, как скалярное произведение работает в математике, и какую форму ввода вы будете использовать, чтобы получить правильный ответ! Не бросайте случайные формы! Ваш feature_vector имеет форму (100,3), которая при умножении на вашу тета, какая из фигур (3,1), выведет вектор предсказания формы (100,1).

Matrix multiplication: The product of an M x N matrix and an N x K matrix is an M x K matrix. The new matrix takes the rows of the 1st and columns of the 2nd

Итак, ваше измерение у должно быть в форме (100,1), а не (100,). Огромная разница! Одним из них является [[3], [4], [6], [7], [9], ...], а другим [3,4,6,7,9, .....]. Ваше измерение должно соответствовать правильному выводу!

Лучший способ задать вопрос - как рассчитать ошибку / стоимость в логистической регрессии, используя правильные размеры моих меток.!

Для дополнительных понимание!

import numpy as np

label_type1= np.random.rand(100,1)
label_type2= np.random.rand(100,)
predictions= np.random.rand(100,1)
print(label_type1.shape, label_type2.shape, predictions.shape)

# When you mutiply (100,1) with (100,1) --> (100,1)
print((label_type1 * predictions).shape)

# When you do a dot product (100,1) with (100,1) --> Error, for which you have to take a transpose which isn't relavant to the context!
# print( np.dot(label_type1,predictions).shape) # error: shapes (100,1) and (100,1) not aligned: 1 (dim 1) != 100 (dim 0)
print( np.dot(label_type1.T,predictions).shape) # 
print('*'*5)

# When you mutiply (100,) with (100,1) --> (100,100) !
print((label_type2 * predictions).shape) # 

# When you  do a dot product (100,) with (100,1) --> (1,) !
print(np.dot(label_type2, predictions).shape) 
print('*'*5)

# what you are doin
label_type1_addDim = np.reshape(label_type2,(-1,1))
print(label_type1_transpose.shape)

Итак, если перейти прямо к делу, то, чего вы хотите достичь, это стоимость с dim (100,1)! так что либо вы делаете 1-й, что вы не делаете! или вы делаете пятое, где вы неосознанно добавляете измерение к своему y, делая его из (100,) в (100,1) и выполняя ту же операцию *, что и в первом случае! чтобы получить тусклое (100,1).

16
задан digiarnie 27 October 2008 в 22:05
поделиться

5 ответов

Это столь же просто как решающий лицензировать Ваше программное обеспечение в соответствии с конкретной лицензией. Это не технически договорное право, но закон об авторском праве. Как владелец/лицензиар Вашей интеллектуальной собственности (источник и двоичные файлы) можно лицензировать его распределение так или иначе, Вы считаете целесообразным. Обеспечение четкой правовой оговорки относительно прав получателей в соответствии с лицензией является всем, что необходимо. Без лицензии, или закрытый или открытый, никто не имеет право распределить Ваше произведение, охраняемое авторским правом. Цель всех лицензий состоит в том, чтобы предоставить некоторые Ваши права другим сторонам.

Посмотрите здесь для получения дополнительной информации. Или для, возможно, слишком большой информации, проверьте Лицензирование Программного обеспечения с открытым исходным кодом и Бесплатного программного обеспечения Понимания O'Reilly.

~ Раздраженная Земля William

9
ответ дан 30 November 2019 в 22:55
поделиться

это зависит от типа лицензии Open Source, которую Вы пытаетесь использовать, у всех них есть совсем другие значения и вещи учесть. даже Ваш дизайн может быть влиянием в зависимости от типа лицензии Open Source, которую Вы используете.

0
ответ дан 30 November 2019 в 22:55
поделиться

Для лицензий GNU, по крайней мере, Вы следуете их инструкциям, и Вы затем лицензируете свое программное обеспечение (или документация) в соответствии с той лицензией.

2
ответ дан 30 November 2019 в 22:55
поделиться

Нет, это - в значительной степени это. Из текста GPLv3 добавьте это к своей программе:

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

"Контракт" - это: без GPL никто, но Вы не имеет права распределить Вашу программу. Они не имеют никаких прав копирования. GPL говорит, что, если они соблюдают его условия, затем Вы предоставляете им дополнительные права на распределительные копии Вашего кода.

Существуют другие Бесплатные лицензии / лицензии Программного обеспечения с открытым исходным кодом, но я просто использую это в качестве примера.

3
ответ дан 30 November 2019 в 22:55
поделиться

В США авторские права, которые Вы имеете, являются "автоматическими" - т.е. никто не может перераспределить Вашу работу без разрешения.

Все эти лицензии с открытым исходным кодом имеют одну цель только - для предоставления этого разрешения (при некоторых условиях).

На самом деле просто необходимо заявить, что Вы распределяете свое программное обеспечение в соответствии с некоторой лицензией, и это достаточно. Это до пользователя для повиновения этой лицензии, иначе привет/она использует программное обеспечение без разрешения в нарушение авторского права.

Вам решать для выбора, какой использовать, или даже записать одно собственное с этими простыми словами "Можно сделать то, что Вы хотите без любой гарантии от меня".

Если Вы не определите свои требования, никто не сможет помочь Вам выбрать "готовую" лицензию, которая соответствует Вашим потребностям.

0
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: