Я пытаюсь развернуть модель кафе, содержащую слой RNN. Вопрос, который я имею, состоит в том, как вычислить выход из сети. Я предположил, что я мог бы позвонить
net->Forward();
обновить сеть, а затем
net->output_blobs()[0]->mutable_cpu_data()[x];
один раз за каждый шаг, чтобы прочитать вывод. Тем не менее, используя постоянный ввод, а затем работаетnet-Forward()
«Несколько раз не влияет на вывод, как можно было бы ожидать. Я пытался использовать разные веса / смещения, которые изменяют вывод, но независимо от того, какую конфигурацию я использую, вывод все равно будет статическим. Кто-нибудь знает, что правильная процедура для развертывания кафе RNN с C ++?
Редактировать:
Это было проверено с одним нейронным слоем RNN, как показано ниже.
model.prototxt:
layer {
name: "input"type: "Input"top: "states"input_param {
shape: {
dim: 1
dim: 1
}
}
}
input: "clip"input_shape { dim: 1 dim: 1 dim: 1}
layer {
name: "rnn"type: "RNN"top: "rnn"bottom: "clip"bottom: "states"recurrent_param {
num_output: 1
}
}
И .cpp:
caffe::Blob<float>* input_layer = test_net->input_blobs()[0];
float* input_data;
input_data = input_layer->mutable_cpu_data();
input_data[0] = 1.0;
for (int i=0; i<5; i++)
{
test_net->Forward();
cout << "Ouput: " << net->output_blobs().back()->mutable_cpu_data()[0] << endl;
}
Задача ещё не решена.
Других решений пока нет …