Я хочу реализовать трансферное обучение с использованием архитектуры Dense V-Net. Когда я искал, как это сделать, я обнаружил, что эта функция в настоящее время работает ( Как реализовать обучение переносу в NiftyNet? ).
Хотя из этого ответа совершенно ясно, что не существует прямого способа его реализации, я пытался:
1) Создайте Dense V-Net
2) Восстановление весов из файла .ckpt
3) Внедрите трансферное обучение самостоятельно
Чтобы выполнить шаг 1, я подумал, что мог бы использовать модуль niftynet.network.dense_vnet. Поэтому я попробовал следующее:
checkpoint = '/path_to_ckpt/model.ckpt-3000.index'
x = tf.placeholder(dtype=tf.float32, shape=[None,1,144,144,144])
architecture_parameters = dict(
use_bdo=False,
use_prior=False,
use_dense_connections=True,
use_coords=False)
hyperparameters = dict(
prior_size=12,
n_dense_channels=(4, 8, 16),
n_seg_channels=(12, 24, 24),
n_input_channels=(24, 24, 24),
dilation_rates=([1] * 5, [1] * 10, [1] * 10),
final_kernel=3,
augmentation_scale=0)
model_instance = DenseVNet(num_classes=9,hyperparameters=hyperparameters,
architecture_parameters=architecture_parameters)
model_net = DenseVNet.layer_op(model_instance, x)
Однако я получаю следующую ошибку:
TypeError: Failed to convert object of type <type 'list'> to Tensor. Contents: [None, 1, 72, 72, 24]. Consider casting elements to a supported type.
Итак, вопрос:
Есть ли способ реализовать это?