Uma biblioteca rápida e gratuita para o MT4, muito para o deleite de quem trabalha com redes neurais - página 15

 
lasso >> :

Vou acrescentar. Ou no caso de uma queda do terminal. Mas parece ter sido encontrada uma solução.

A questão é diferente. Vladislav, você parece ler o código C++ sem "intermediários".

Você poderia comentar sobre o problema com respostas idênticas do comitê de grade e inicialização correta dos valores de pesos? (detalhado aqui e mais logs, e aqui uma pergunta sobre pesos)

Examinei os códigos. A aleatorização está lá. O que não é : uma vez que o C/C++ padrão tem um gerador de números quase-random, é recomendado reinicializar o kernel (semente - srand(int ) - mover ponto de referência antes de cada chamada para rand())

int rand( void );
  Return Value 
rand returns a pseudorandom number, as described above. There is no error return.

  Remarks 
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). 
Use the srand function to seed the pseudorandom- number generator before calling rand.

//------------------------------------------------

Sets a random starting point.


void srand(
   unsigned int seed 
);
  Parameters 
seed
Seed for random- number generation

  Remarks 
The srand function sets the starting point for generating a series of pseudorandom integers in the current thread. 
To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random 
starting point. rand retrieves the pseudorandom numbers that are generated. 
Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

  


 
Henry_White писал(а) >>

Sim. As entradas são diferentes para cada grade, embora isto não seja crucial. Você pode pegar um sinal padrão, por exemplo, o mesmo RSI e uma grade, e ainda obter valores negativos em qualquer entrada na força bruta.

Inicialização das escalas -1, 1.

Sobre o perfil... Você se refere ao arquivo resultante da rede treinada?

Não. Estamos falando de coisas diferentes. Eu lhe perguntei sobre os resultados!? Por favor, dê uma olhada aqui. Isto é, temos um comitê de 16 redes, inicializá-las com pesos aleatórios, colocar um único &input_vector[] em cada entrada e como resultado as saídas são as mesmas! (no link todos os logs estão dispostos).

Aqui está a questão!!!

........

Sim. O arquivo resultante da rede treinada mostra aqui, ou envie um e-mail para ..... Interessados nos valores dos pesos. Também seria bom ter um perfil da rede imediatamente após a inicialização, sem treinamento. >> OK?

 
lasso >> :

Não. Estamos falando de coisas diferentes. Eu lhe perguntei sobre as saídas!? Por favor, cavem aqui. Isto é, temos um comitê de 16 redes, inicializá-las com pesos aleatórios, colocar um único &input_vector[] em cada entrada, como resultado as saídas são as mesmas!!! (no link todos os logs estão dispostos).

Aqui está a questão!!!

........

Sim. O arquivo resultante da rede treinada mostra aqui, ou envie um e-mail para ..... Interessados nos valores dos pesos. Também seria bom ter um perfil da rede imediatamente após a inicialização, sem treinamento. Ok?

Nós realmente falamos de coisas diferentes )) Eu entendo seu problema. E verificou-o. E confirmou que sim, tal efeito está presente.

Em meu último post escrevi "Outra estranheza", o que significa que não tem nada a ver com o problema da randomização dos pesos iniciais e a identidade da operação das malhas do comitê com um único vetor de entrada.

Estou dizendo que com aprendizagem redundante (embora o efeito também esteja presente com aprendizagem normal), com, segundo o MSE, convergência positiva, a rede não "encontra" um mínimo absoluto, e nem mesmo local, mas rola banalmente para o limite de alcance, o que indica um problema no algoritmo de aprendizagem...

 

A propósito, verificou a inicialização dos pesos iniciais (registrados imediatamente após a criação). Tudo funciona. A aleatorização está lá.

Mas aqui está uma entrada estranha que encontrei no perfil:

layer_sizes=31 31 17 2

E isto em:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); com AnnInputs=30

As camadas ocultas são, por alguma razão, especificadas mais uma do que a declarada. Mas o que me confunde ainda mais é o tamanho da camada de saída "2" quando "1" é declarado!!!

 
Henry_White >> :

A propósito, verificou a inicialização dos pesos iniciais (registrados imediatamente após a criação). Tudo funciona. A aleatorização está lá.

Mas aqui está uma entrada estranha que encontrei no perfil:

layer_sizes=31 31 17 2

E isto em:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); quando AnnInputs=30

Por alguma razão há mais uma camada oculta do que a declarada. Mas o que me confunde ainda mais é o tamanho da camada de saída "2" quando "1" é declarado!!!

Lá tudo está correto. Há 4 camadas no total: camada de entrada, 2 camadas ocultas, camada de saída. Cada camada tem viés = 1, ela não participa da dimensão "usuário". Isto é tirado da documentação da FANN.


Boa sorte.

 
Sim, eu li sobre preconceitos... Mas eu não vi nada sobre isso aparecer no perfil da grade. Talvez você esteja certo e é realmente um neurônio de feedback adicional. De qualquer forma, isso explicaria logicamente o aumento incremental de camadas. E eu já estava feliz por ter encontrado uma pista sobre a "flutuação" da malha até o limite da faixa ))))
 
Henry_White писал(а) >>

A propósito, verificou a inicialização dos pesos iniciais (registrados imediatamente após a criação). Tudo funciona. Há a aleatorização.

Sim, há uma aleatorização de pesos. Mas ainda assim repito:

Anotado. A aleatorização é de -1 a 1, e no perfil da rede, os pesos são -10,0e--003 a 10,0e-003

Exemplo: (12, -7.3557763636217311400000e-003) (13, 7.639700053449810000e-002)

Isto é correto?

É por isso que pedi para mostrar seus perfis de rede....

 
lasso >> :

Sim, a aleatorização das escalas está lá. Mas vou dizer novamente:

Anotado. A aleatorização é de -1 a 1, e no perfil da rede os pesos são de -10,0e--003 a 10,0e-003

Exemplo: (12, -7.3557763636217311400000e-003) (13, 7.639700053449810000e-002)

Isto é correto?

É por isso que pedi para mostrar seus perfis de rede....

Verificado - meus valores são diferentes e dispersos quase uniformemente. Esta é uma das inicializações :

conexões (conectadas_a_neuron, peso)=(0, -9,9468994140625000000000000e-001) (1, -6,8841552734343750000e-001) (2, 6,51367187500000000e-001) (3, -8,2067871093750000e-001) (4, 9,83703613281250000e-001) (5, -68493652343437500000000e-001) (6, 3.6010742187500000000e-001) (7, 2.90527343750000e-001) (8, 7.546386718750000e-001) (9, -7.60314941406250000e-001) (10, -7.78137207031250000e-001) (11, 75543212890890625000000000000e-001) (12, -6,61560058593750000e-001) (13, 1,65771484343750000e-001) (14, 5,710449218750000e-001) (15, -1,54785156250000e-001) (16, 9,851074218750000e-002) (17, -5.269165039062500000000e-001) (18, 8.58947753906250000e-001) (19, -5.6652832031231250000e-001) (20, 7.3144531250000e-001) (21, -8.80310058593750000e-001) (22, 6.823730468750000e-002)

................................................................................................................................................................................................................................

(42, -6,9537353515625000000000000e-001) (43, -7,0153808593750000e-001) (44, -7,3895263636718750000e-001) (45, -3,44238281250000e-002) (46, -1.994018554687500000000e-001) (47, 2.73132324218750000e-001) (48, 4.53186035156250000e-001) (49, -4.709472656250000e-001) (50, -7.741699218750000e-001) (51, -9.54711914062500000000e-001) (52, 8.0950927734343750000e-001) (53, 9.92370605468750000e-001) (54, -4.13391113281250000e-001) (55, 6.672973632812500000000e-001) (56, 9.59289550781250000e-001) (57, 1.0925292968750000e-001) (58, -3.02551269531250000e-001) (59, -5.29785156256250000e-001) (60, 5.857543945312500000000e-001) (61, 7.999877929968750000e-001) (62, -1.11999511718750000e-001) (63, -8.0749511718750000e-001) (64, -7.08862304687500000000e-001) (65, 8,05236816406250000e-001) (66, 2,9260253906250000e-001) (67, 3,6163333300781250000e-001) (68, -2,99011230468750000e-001) (69, 6.248168945312500000000e-001) (70, -7,1575927734343750000e-001) (71, -7,5720214843750000e-001) (72, -1,31774902343750000e-001) (73, 5,53894042968750000e-001) (74, -3.850097656250000000000000000e-001) (75, -3,3361816406250000e-001) (76, -9,58740234343750000e-001) (77, -3,70544433593750000e-001) (78, 8,2690429468750000e-001)


SZZ A verdade monta a própria biblioteca. Um pouco diferente da f2M. Embora a ideologia do autor da f2M me tenha agradado e levado a uma visão semelhante. Apenas acrescentei a reinicialização do gerador hoje - não sei o quanto ela a afeta.


 
VladislavVG писал(а) >>

Verificado - meus valores são diferentes e dispersos quase uniformemente. Aqui está uma das inicializações :

Seus pesos são mais do que corretos, mas quais são os valores das saídas da rede quando o vetor de entrada é o mesmo?

 
lasso >> :

Seus pesos são mais do que corretos, mas quais são as saídas de rede para o mesmo vetor de entrada?

Eu ainda não testei tudo completamente - enquanto o testador de otimização está em funcionamento. Não quero interrompê-lo.

Posso anexar dll, mqh e EA - há algumas diferenças em relação às originais, talvez seja mais rápido fazê-lo funcionar.