Я непрофессионал, поэтому я помогу вам с терминами непрофессионала:)
input_size = 784
hidden_sizes = [128, 64]
output_size = 10
Это параметры для слоев в вашей сети. Каждая нейронная сеть состоит из layers
, и каждый layer
имеет форму входа и выхода.
В частности, input_size
имеет дело с формой ввода первого слоя. Это input_size
всей сети. Каждый образец, который вводится в сеть, будет 1-мерным вектором длиной 784 (массив длиной 784).
hidden_size
имеет дело с формами внутри сети. Мы расскажем об этом чуть позже.
output_size
имеет дело с выходной формой последнего слоя. Это означает, что наша сеть будет выводить одномерный вектор длиной 10 для каждого образца.
Теперь, чтобы разбить определение модели построчно:
model = nn.Sequential(nn.Linear(input_size, hidden_sizes[0]),
Часть nn.Sequential
просто определяет сеть, каждый входной аргумент определяет новый слой в этой сети в этом порядке. [1134 ]
nn.Linear(input_size, hidden_sizes[0])
является примером такого слоя. Это первый слой нашей сети, который принимает входные данные размером input_size
и выводит вектор размером hidden_sizes[0]
. Размер вывода считается «скрытым» в том смысле, что он не является входом или выходом всей сети. Он «скрыт», потому что он расположен внутри сети вдали от входных и выходных концов сети, с которой вы взаимодействуете, когда фактически используете ее.
Это называется Linear
, потому что оно применяет линейное преобразование путем умножения входных данных на его матрицу весов и добавления своей матрицы смещения к результату. (Y = Ax + b, Y = выход, x = вход, A = вес, b = смещение).
nn.ReLU(),
ReLU является примером функции активации. Эта функция применяет какое-то преобразование к выходному сигналу последнего уровня (уровня, описанного выше) и выводит результат этого преобразования. В этом случае используемой функцией является функция ReLU
, которая определяется как ReLU(x) = max(x, 0)
. Функции активации используются в нейронных сетях, потому что они создают нелинейности. Это позволяет вашей модели моделировать нелинейные отношения.
nn.Linear(hidden_sizes[0], hidden_sizes[1]),
Из того, что мы обсуждали выше, это еще один пример layer
. Он принимает входной сигнал hidden_sizes[0]
(такой же формы, что и выходной сигнал последнего слоя) и выдает одномерный вектор длины hidden_sizes[1]
.
nn.ReLU(),
Снова применяет функцию ReLU
.
nn.Linear(hidden_sizes[1], output_size)
То же, что и вышеупомянутые два слоя, но наша выходная форма на этот раз - output_size
.
nn.Softmax(dim=1))
Еще одна функция активации. Эта функция активации превращает логиты, выведенные с помощью nn.Linear
, в фактическое распределение вероятностей. Это позволяет модели выводить вероятность для каждого класса. На данный момент наша модель построена.
# Forward pass through the network and display output
images, labels = next(iter(trainloader))
images.resize_(images.shape[0], 1, 784)
print(images.shape)
Это просто предварительная обработка обучающих данных и перевод их в правильный формат.
ps = model.forward(images[0,:])
Это позволяет передавать изображения через модель (прямая передача) и применять операции, ранее обсуждавшиеся в слое. Вы получите результирующий вывод.
Мы оценили библиотеки из Syncfusion, Infragistics, ComponentOne, Xceed, Janus и DevExpress. Мы выбрали DevExpress на основе его набора функций, производительности сетки и функций, а также функций управления лентой.
Сравнивая Infragistics и элемент управления DevExpress Grid, я обнаружил, что:
Элемент управления DevExpress DxGrid для Windows Forms просто великолепен. Встроенные редакторы делают UX очень приятным. Сортировка и группировка просты в использовании и понятны как для разработчика, так и для конечного пользователя.
В целом я очень доволен библиотекой. Их поддержка отличная. За время существования этого проекта я задал более 20 вопросов в службу поддержки и каждый раз получал хорошие ответы.
Я бы потратил свои деньги на элементы управления DevExpress.
Я - парень asp, и я использовал devexpress, когда я заключал контракт. Любой комплект имеет свой собственный набор глюков, которые необходимо изучить, но в целом я был рад. Мой текущий работодатель использует telerik, и я оглядываюсь назад на свое время с aspxperience как яркое время.
Я действительно тратил свои собственные деньги на их материал, и я думаю, что это был хороший выбор. Одна только их сетка серьезно помогла мне получить контракты.
Сетка DevEx является потрясающей, хотя у меня нет опыта с UltraWinDataGrid.
Я был бы готов потратить свои собственные деньги на материал DevEx? Да, и я делаю - я использовал их материал от пути назад в дни Delphi (сохраняемая подписка Delphi в течение приблизительно 5 лет, представая 4 года перед подпиской.NET теперь). У них есть невероятная поддержка и очень сильная линейка продуктов.
Править: на основе того, что я видел на сайте Infragistics для их NetAdvantage WinGrid, Сетка DevEx может сделать все это и т.д. Вся фильтрация, сортировка, группировка и пользовательский макет наполняют, Вы, вероятно, привыкли к плюс AMD Разметок Карты больше. Плюс, DevEx имеют гарантию возврата денег без вопросов, если Вы не довольны их материалом.
Честно, я не зазывала DevEx, просто действительно счастливый клиент, который - да - платит его собственные деньги за их материал :)
Они оказываются полезными также: http://www.componentsource.com/products/dxperience-winforms/reviews.html
и
http://www.componentsource.com/products/netadvantage-net/reviews.html
Но не решенный все же...
Я много качаюсь вперед и назад с NetAdvantage. Элементы управления хороши, но слишком сложны - огромная кривая обучения новому элементу управления. Они также не очень эффективны и, как правило, генерируют большие объемы данных состояния просмотра и HTML; гораздо больше, чем я считаю необходимым. Их набор средств контроля эволюционировал с годами, и, честно говоря, я бы предпочел, чтобы они начали заново - даже если это заставило бы меня перестраивать большие части моих веб-приложений.
Их контроль качества, хотя и ужасен. Каждую новую версию встречают больше со страхом, чем с радостью: новые ошибки появляются так же быстро, как исправляются старые. Например, они оставили в файлах JavaScript инструкцию «отладки».
Я подозреваю, что их поддержка недавно была передана на внешний подряд, и их стандартный ответ: «
Но, несмотря на все минусы, элементы управления обладают богатым набором функций и позволяют сэкономить время на самостоятельной прокрутке. Сколько времени? Больше не уверен в этом.
Но, несмотря на все минусы, элементы управления обладают богатым набором функций и позволяют сэкономить время на самостоятельной прокрутке. Сколько времени? Больше не уверен в этом.
Нас также поразили сетевые компоненты NetAdvantage. Хотя с этого момента все пошло под откос. Похоже, их служба технической поддержки «удивлена» «сложностью», которую мы хотим включить в таблицу (например, сортировка, флажки, меню и т. Д.).
Решением было потратить с ними больше денег на их консультации сервисы, чтобы исправить свой код. Я бы лучше откусил себе руку, прежде чем отдать деньги.
Приятно знать, что мы не одиноки в своем опыте.
Я работал как с DevExpress, так и с Infragistics и обнаружил, что DevExpress намного лучше по нескольким причинам. Элементы управления работают лучше, кажутся более стабильными, а файлы зависимостей намного легче для DevExpress. Фактически мы сделали проект, отказавшись от более старого (.Net v1.5) решения, в котором использовались Infragistcs, потому что его было очень трудно поддерживать из-за необходимой установки зависимостей.