7

Есть ли простой способ (например, без изменения кода ) для загрузки wights из нескольких предварительно подготовленных сетей в одну сеть? Сеть содержит несколько уровней с такими же размерами и именами, что и обе предварительно подготовленные сети.Несколько предварительно подготовленных сетей в Caffe

Я пытаюсь достичь этого, используя NVidia DIGITS и Caffe.

EDIT: Я думал, что это невозможно будет сделать непосредственно от DIGITS, что подтверждается ответами. Может ли кто-нибудь предложить простой способ изменить код DIGITS, чтобы иметь возможность выбирать несколько предварительно подготовленных сетей? Я немного проверил код и подумал, что training script будет хорошим местом для начала, но у меня нет глубоких знаний о Caffe, поэтому я не уверен, какой лучший/быстрый способ достичь этого.

ответ

6

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

Я создал запрос на перенос в официальном репозитории, и мои изменения были затем объединены с основной ветвью DIGITS, то есть теперь можно использовать эту функцию в DIGITS.

+0

Вы сделали аналогичный запрос на тягу к хранилищу BVLC/caffe? – Shai

+0

Вы можете сделать это с помощью 'caffe', используя параметр' --weights', разделяющий разные сети запятыми. –

2

AFAIK нет прямого способа сделать это.
Однако вы можете использовать net surgery для загрузки предварительно подготовленных моделей и вручную назначить их веса целевой сети. После того, как у вас есть единственная сеть со всеми весами, инициализированными в соответствии с различными предварительно подготовленными моделями, вы можете сохранить ее и использовать ее как одну предварительно подготовленную модель для остальной части вашей работы.

+1

вот как это сделать ... модель NN - это всего лишь куча весов, поэтому все, что вам нужно сделать, это скопировать их и сохранить. удачи, хотя ... если вы скопируете слои из разных сетей, они могут плохо играть вместе. И цифры довольно высокого уровня ... вам нужно будет зайти на python или C++, чтобы это сделать. – user1269942

+0

Есть ли простой способ включить это в код DIGITS (я редактировал вопрос)? –

+0

@ IgorŠevo, если вы собираетесь попробовать этот трюк много раз, вы можете рассмотреть возможность изменения учебного сценария DIGITS. Тем не менее, я думаю, что если вы собираетесь делать это только один или два раза, вам лучше сделать это вручную, используя «чистую операцию». – Shai

 Смежные вопросы

  • Нет связанных вопросов^_^