Какой смысл того, чтобы заморозить Вашу версию/драгоценные камни направляющих?

Это потому, что вы передаете список модельных объектов model_list, которые не являются тензорами, они обертывают графы вычислений, которые дают входные данные, производящие тензоры. Вместо этого вы должны собрать тензорные выходы, что-то вроде:

  #...
  model_ins.append(seg1)
  # ...
  model_outs.append(drop)
# ...
all_model_outs = Concatenate(model_outs)
flat_model_outs = Flatten()(all_model_outs)
den2 = Dense(128)(flat_model_outs) # the error in this line
# ...
big_model= Model(model_ins, final_out)
big_model.compile(loss="categorical_crossentropy", optimizer= opt, metrics=["accuracy"])
big_model.fit_generator(aug.flow(trainX, trainY, batch_size=BS),validation_data=(testX, testY),steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1)

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

10
задан Bijou 28 April 2009 в 19:07
поделиться

4 ответа

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

Замораживание gem помещает его в папку vendor вашего приложения, и он не будет автоматически обновляться самостоятельно. Rails вместо этого будет использовать эту версию драгоценного камня.

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

Это относится и к самому драгоценному камню rails, так как более новые версии rails могут в конечном итоге привести к поломке чего-либо в вашем приложении, замораживание предотвратит обновление всей системы (и, опять же, позволяет обновлять другие приложения на твоя машина,

21
ответ дан 3 December 2019 в 15:36
поделиться

Freezing is great - as others have said it reduces your dependency on your external environment. It's particularly important if you're on shared hosting, or otherwise don't fully control where you deploy.

However, it can be problematic for programs like rake and capistrano that don't run within your Rails environment. They have their own gem loading path, which you can affect, but you need to be aware of it. Also, a gem with native extensions (libxml, hpricot, ...) can't be frozen, because the OS-specific bits still need to live in the external OS.

Also, probably not an issue right now but something to be aware of - Rails 3 will be moving to a new method of managing plugins, gems, and the vendor directory in general. It's all kind of a mess at the moment.

2
ответ дан 3 December 2019 в 15:36
поделиться

Я думаю, что Филк ударил по голове своими комментариями.

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

Это может быть что-то незначительное или что-то, что мешает вашим пользователям выполнять свою работу.

Просто Google, «rails gem update разбивает мое приложение», чтобы увидеть некоторые неприятности.

У Игоря Минара есть хорошая запись в блоге о том, почему вы должны заморозить и гемы, и Rails, а также обсуждение того, как вы можете сейчас установить конкретные зависимости версии гемов в Rails.

Вы можете заморозить Rails, вы можете заморозить гемы, вы можете установить зависимость от конкретной версии гема в вашем файле environment.rb.

Причина, по которой вы это сделаете, заключается в том, чтобы ваше приложение не сломалось при выпуске обновленной версии гема или Rails. Замораживание позволяет вам протестировать обновление на отдельной машине, убедиться, что оно проходит все ваши автоматизированные тестовые наборы, позволяет вашим пользователям проверять обновленное приложение по его темпам, а затем (после хорошего резервного копирования) вы применяете обновление к гему или Rails.

4
ответ дан 3 December 2019 в 15:36
поделиться

Вот учебник , посвященный заморозке приложения для рельсов.

1
ответ дан 3 December 2019 в 15:36
поделиться