Вам необходимо использовать функцию fann_get_connection_array()
. Он дает вам массив struct fann_connection
, а struct fann_connection
имеет поле weight
, так что это то, что вы хотите.
Вы можете сделать что-то подобное, чтобы напечатать ваш вес матрицы:
int main(void)
{
struct fann *net; /* your trained neural network */
struct fann_connection *con; /* weight matrix */
unsigned int connum; /* connections number */
size_t i;
/* Insert your net allocation and training code here */
...
connum = fann_get_total_connections(net);
if (connum == 0) {
fprintf(stderr, "Error: connections count is 0\n");
return EXIT_FAILURE;
}
con = calloc(connum, sizeof(*con));
if (con == NULL) {
fprintf(stderr, "Error: unable to allocate memory\n");
return EXIT_FAILURE;
}
/* Get weight matrix */
fann_get_connection_array(net, con);
/* Print weight matrix */
for (i = 0; i < connum; ++i) {
printf("weight from %u to %u: %f\n", con[i].from_neuron,
con[i].to_neuron, con[i].weight);
}
free(con);
return EXIT_SUCCESS;
}
Подробности:
[1] fann_get_connection_array()
[2] struct fann_connection
[3] fann_type (type for weight)
Я пытался использовать ваш код, но я получаю эта ошибка: ошибка сегментации: 11 :(:( – Teo
У меня нет библиотеки FANN, поэтому этот код является лишь иллюстрацией ответа (над кодом). Поэтому, конечно, этот код может потерпеть неудачу. Во всяком случае, я немного переработал его, попробуйте сейчас. А также обязательно выделите память для переменной 'net' и подготовьте ее перед вызовом следующего кода. –
Извините, я так глуп! Ваш код прав ... Просто я позвонил по-другому в сети, поэтому я использовал пустую сеть до ... – Teo