O "New Neural" é um projecto de motor de rede neural Open Source para a plataforma MetaTrader 5. - página 73

 
yu-sha:

O Pré-Processador é para este mesmo fim

Quer você tenha 2 ou 100 neurônios, o arquivo parece o mesmo.

Bem, ninguém o impede de o fazer graficamente - basta escrever uma GUI e usá-la.

Bem, não vamos cortar o ombro, vamos colocá-lo em linhas claras. Não é um facto que seja o mesmo para os outros, mas para mim a forma de carregamento que expus acima é óbvia em termos de algoritmo de carregamento:

ler uma string, inicializar objetos do tipo 3 camadas,

lemos a primeira linha, depois chamamos o objecto da primeira camada, construímos a entrada tipo camada, inicializamos a matriz de 2 neurónios.

ler a segunda linha, depois chamar a segunda camada de objeto, construir a camada tipo mlp, inicializar a matriz de 2 neurônios.

ler a terceira linha, depois chamar o objeto da segunda camada, construir o tipo de camada mlp, inicializar a matriz de neurônios de 1.

Como o número de camadas é de 3, terminamos a construção na terceira linha e atribuímos as ligações.

para fazer isso, nós vamos através da tabela e chamamos os neurónios necessários, dizendo-lhes os links se a tabela contém 1.

E como funcionaria o algoritmo em xml?

ZS e a principal vantagem é que, como a mesa de conexão é binária, é perfeitamente ligável. A mesa para 8 neurônios cabe em um ulong. É verdade que, quanto mais longe na floresta, mais grossos os partidários em geral, o tamanho com um grande número de neurónios é calculado como

X=N*N/8

onde N é o número de neurónios,

X é o número de bytes.

 

Desvantagens

  • A sintaxe do XML é redundante.[8]
  • O tamanho de um documento XML é significativamente maior do que uma representação binária dos mesmos dados. Em estimativas aproximadas o valor deste fator é tomado como 1 ordem de grandeza (por um fator de 10).
  • O tamanho do documento XML é significativamente maior que um documento em formatos alternativos de transferência de dados baseados em texto (por exemplo,JSON[4],YAML,Protocol Buffers) e especialmente em formatos de dados otimizados para um caso de uso particular.
  • A redundância do XML pode afetar a eficiência de uma aplicação. O custo de armazenamento, processamento e transferência de dados aumenta.
  • XML contém metadados (sobre nomes de campos, nomes de classes, agrupamento de estruturas), e ao mesmo tempo XML é posicionado como uma linguagem de comunicação de sistemas abertos. Ao transferir um grande número de objetos do mesmo tipo (a mesma estrutura) entre sistemas, não faz sentido transferir metadados repetidamente, embora eles estejam contidos em cada instância da descrição XML.
  • Para um grande número de tarefas você não precisa do poder total da sintaxe XML e pode usar soluções muito mais simples e eficientes.

Peço desculpa pelo plágio.
 

Proponho o XML como padrão para armazenar configurações, redes, configurações, ...

E só é necessário nas fases de inicialização/armazenamento.

No processo de fluxo de trabalho, e mais ainda no processo de aprendizagem, não há a questão do XML

ela.humana:
Peço desculpa pelo plágio.

Sim, mas por alguma razão monstros como Oracle, Microsoft, ... ranger os dentes para afastar os seus padrões "binários" (geralmente comerciais) e virar-se para padrões abertos

Subtrair 10 MBytes de XML não é um problema para os computadores modernos

MS Word .docx documento de 100 MBytes não é intimidante ?

Se o problema é baixar uma rede de um arquivo XML, então treiná-lo em tal hardware é simplesmente irrealista - as tarefas são incomparáveis em complexidade.

 
yu-sha:

Proponho o XML como padrão para armazenar configurações, redes, configurações, ...

E só é necessário nas fases de inicialização/armazenamento.

No processo de fluxo de trabalho e ainda mais na fase de aprendizagem, não se trata de XML

Considere o seguinte: seu arquivo em xml é 916 bytes e em representação binária, 64 bytes mesmo que você não clique no cabeçalho.

7 variáveis de cabeçalho + 1 por tabela = 8 ulong * 8 bytes = 64

 
Urain:

O seu arquivo xml é 916 bytes, enquanto a representação binária é 64 bytes, mesmo que você não clique no cabeçalho.

7 variáveis de cabeçalho + 1 por tabela = 8 ulong * 8 bytes = 64


Para abrir esta página do fórum, estou bombeando pela Internet pelo menos cem kilobytes.

Estamos em 2012 e eu não uso essa unidade de medida como byte durante muito tempo ))

P.S.

Eu só sugeri o meu caminho - cabe ao público decidir

 
Yu-sha:

Proponho o XML como padrão para armazenar configurações, redes, configurações, ...

E só é necessário nas fases de inicialização/armazenamento.

No processo de workflow, e ainda mais no processo de formação, não se trata de XML.

Para otimizar a estrutura da rede, é necessário (na hora) alterar o número de neurônios e conexões.

É possível fazer isto?

Se você não se importa, por favor comente seus códigos, você sabe que o código das outras pessoas pode levar muito tempo para ser lido sem comentários. Obrigado.

 
her.human:

Para otimizar a estrutura da rede é necessário (na hora) alterar o número de neurônios e conexões.

É possível fazer isso?

Se não for difícil, por favor comente os seus códigos, sabe, demora muito tempo a compreender os códigos dos outros sem comentários. Obrigado.

Isto é uma questão de treino. Potencialmente, é possível, mas eu não o usei na prática.

Normalmente, no processo de aprendizagem, a estrutura da rede não se altera - apenas os parâmetros adaptativos são alterados.

Sua definição do problema já é um meta-nível, para treinar um arquiteto a mudar a estrutura da rede, de modo que a rede resultante seja mais bem sucedida na aprendizagem do que outras

Códigos postados "como está" - feitos para mim mesmo e, como sempre, com pressa, por isso, desculpem-me.

De uma boa maneira, tudo deve ser reconstruído pelos ossos depois de todo o projeto ser trabalhado.

 
yu-sha:

Eu descarrego pelo menos cem kilobytes para abrir esta página do fórum.

Estamos em 2012 e eu não uso essa unidade de medida como byte durante muito tempo ))

P.S.

Eu acabei de oferecer a minha versão - cabe ao público decidir.

Vamos fazer um experimento, criar um carregador xml para 1000 neurônios com 100 links por neurônio, e postar o tamanho do arquivo, estruturar o que você quiser.

Posso apenas calcular de joelhos quanto espaço a minha variante 1000*1000/8=~125KB, e a sua não pode, por isso não posso comparar...

Se a sua versão terá dimensões aceitáveis porque não.

 
Urain:

Não é o ponto, memória, e na GPU será difícil implementar as voltas da lógica de objetos, eu tenho uma boa idéia de como implementar o NS, como uma interação complexa de objetos dentro dos quais existem funções de cálculos da GPU (isto é sobre o nível micro), mas eu não posso imaginar como esse objeto complexo codifica todo esse NS para deslizar a GPU como vários FF com diferentes conjuntos de pesos (nível macro) ????

A questão é retórica, mas se alguém a apresentar, não me importava de ouvir falar dela.

É por isso que a escolha foi feita para a CUDA em vez do OpenCL mais comum.

O código CUDA é orientado ao objeto e você pode passar um objeto gerado na CPU

Há algumas subtilezas, mas todas elas podem ser resolvidas

 
yu-sha:

É por isso que a CUDA foi escolhida em vez do mais comum OpenCL

O código em CUDA é orientado ao objeto e você pode passar o objeto formado na CPU

Há subtilezas, mas todas elas podem ser resolvidas

Eu não sou especialista nisto, acredito em ti, seria bom.