Aprendizado profundo para iniciantes (1) Resumo das etapas básicas de desenvolvimento do TensorFlow

Por meio do blog: Aprendizado profundo para iniciantes (1) As etapas de desenvolvimento básico do TensorFlow preparam dados e constroem modelos (para frente + reverso) e Aprendizado profundo para iniciantes (1) Treinamento iterativo das etapas básicas de desenvolvimento do TensorFlow e
introdução ao modelo .

As etapas básicas do desenvolvimento de tensorflow agora podem ser resumidas da seguinte forma:

  • Definir nó de entrada tensorflow
  • Defina a variável "parâmetro de aprendizagem"
  • Defina "operação"
  • Função de otimização
  • Inicialize todas as variáveis
  • Atualizar iterativamente os parâmetros para a solução ideal
  • Modelo de teste
  • Use o modelo

1. O método de definição de nós de entrada de tensorflow

Existem várias maneiras de definir nós de entrada no tensorflow:

  • Definido por marcadores de posição: normalmente use este método
  • Definido pelo tipo de dicionário: geralmente usado no caso de mais entrada,
  • Definição direta: raramente usado,

(1) Use marcadores de posição para definir instâncias de nós de entrada

No blog: Beginner Deep Learning (1) Etapas básicas de desenvolvimento do TensorFlow: preparação de dados e construção de um modelo (avanço + reverso) , os nós de entrada são definidos por marcadores:

# X,Y为占位符
X = tf.placeholder("float") # 代表x的输入
Y = tf.placeholder("float") # 代表对应的真实值y

Código completo:

在这里插入代码片

(2) Por meio do tipo de dicionário para definir a instância do nó de entrada

A maneira de definir nós de entrada por tipo de dicionário é semelhante à dos marcadores de posição, mas eles estão empilhados juntos.

#占位符
inputdict = {
    
    
    'x':tf.placeholder("float"),
    'y':tf.placeholder("float")
}

(3) Exemplos de definição direta de nós de entrada

A definição direta é colocar as variáveis ​​Python definidas diretamente no nó OP para participar da operação de entrada e colocar as variáveis ​​dos dados simulados diretamente no modelo para treinamento.

2. Defina as variáveis ​​dos "parâmetros de aprendizagem"

A definição de "parâmetro de aprendizagem" é muito semelhante à definição de entrada, que é dividida em duas partes : definição direta e definição do tipo de dicionário .
Como há muitos parâmetros no exemplo de rede neural profunda, o segundo é geralmente usado.

(1) Definir diretamente "parâmetros de aprendizagem"

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight") # w初始化为[-1,1]的随机数,形状为一维的数字
b = tf.Variable(tf.zeros([1]), name="bias") # b的初始化是0,形状为一维的数字
# 通过tf.Variable()函数对参数直接定义

(2) Definir "parâmetros de aprendizagem" por tipo de dicionário

# 模型参数
paradict = {
    
    
    'W':tf.Variable(tf.random_normal([1])) # w初始化为[-1,1]的随机数,形状为一维的数字
    'b':tf.Variable(tf.zeros([1])) # b的初始化是0,形状为一维的数字
}

3. Defina "Operação"

O processo de definição de "operação" é o processo central de estabelecimento do modelo , que determina diretamente o efeito de ajuste do modelo .

(1) Defina o modelo de propagação direta

# 创建正向模型
# X,Y为占位符
X = tf.placeholder("float") # 代表x的输入
Y = tf.placeholder("float") # 代表对应的真实值y

# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight") # w初始化为[-1,1]的随机数,形状为一维的数字
b = tf.Variable(tf.zeros([1]), name="bias") # b的初始化是0,形状为一维的数字

# 前向结构
z = tf.multiply(X, W)+ b # x*w+b

Conforme mostrado acima (blog: aprendizado profundo para iniciantes (1) Etapas básicas de desenvolvimento do TensorFlow: preparação de dados e construção de um modelo (para frente + reverso) ) A estrutura de rede usada é muito simples, com apenas um neurônio.
Posteriormente, você aprenderá mais e mais redes complexas, como: rede neural multicamadas, rede neural convolucional, rede neural recorrente, etc. São todas estruturas de rede compostas por neurônios em diferentes combinações.

(2) Defina a função de perda

A função de perda é usada principalmente para calcular o erro entre o "valor de saída" e o "valor verdadeiro", que é usado em conjunto com a retropropagação.
Para encontrar o valor mínimo (correspondente à solução ótima) na retropropagação, a função deve ser derivável.

4. Otimize a função, otimize o alvo

Com a estrutura direta e a função de perda, os parâmetros de aprendizagem são otimizados por meio da função de otimização e este processo também é concluído na propagação reversa.

PS:

Processo de propagação reversa: É para passar o erro na direção oposta ao longo da estrutura de propagação direta .

5. Inicialize todas as variáveis

Existe apenas uma linha de código, mas é um link muito crítico.
Depois que a sessão é criada, a primeira coisa é inicializá-la.
Por exemplo, no blog: Beginner Deep Learning (1) Treinamento iterativo e modelo de uso das etapas básicas de desenvolvimento do TensorFlow :

# 初始化变量
init = tf.global_variables_initializer() # global_variables_initializer()函数初始化所有变量

Nota:

Use a função tf.global_variables_initializer () para inicializar todas as variáveis, que devem ser concluídas após todas as variáveis ​​e OP serem definidos . Só assim o conteúdo definido pode ser válido , caso contrário, as variáveis ​​e OPs definidos após a inicialização não podem ser calculados usando o run na sessão.

6. Atualize iterativamente os parâmetros para a solução ideal

No processo de treinamento iterativo, é necessário estabelecer uma sessão para ser concluída. Geralmente usa a sintaxe with , que pode ser fechada após o término da sessão.

Por exemplo, no blog: Beginner Deep Learning (1) Treinamento iterativo e modelo de uso das etapas básicas de desenvolvimento do TensorFlow :

with tf.Session() as sess:
    sess.run(init) # 通过sess.进行网络节点的运算
    plotdata = {
    
    "batchsize":[],"loss":[]} # 存放批次值和损失值

Execute os nós no modelo por meio da execução na sessão. O mesmo é verdadeiro no processo de treinamento iterativo, exceto que o OP da operação otimizada é colocado na execução e o número de ciclos precisa ser adicionado à camada externa .

Por exemplo, no blog: Beginner Deep Learning (1) Treinamento iterativo e modelo de uso das etapas básicas de desenvolvimento do TensorFlow :

    # 向模型输入数据
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={
    
    X: x, Y: y}) # 通过feed机制将真实数据灌到占位符(第二步创建模型时)对应的位置

No processo de uso real, será introduzido um conceito denominado MINIBATCH para treinamento iterativo, ou seja, cada vez que uma determinada quantidade de dados é retirada e colocada na rede para treinamento.

7. Modelo de teste

O modelo de teste não é a parte central da rede neural, ou seja, a precisão ou taxa de erro do modelo é calculada para descrever a qualidade do modelo.

Por exemplo, no blog: Beginner Deep Learning (1) Treinamento iterativo e modelo de uso das etapas básicas de desenvolvimento do TensorFlow :

    print ("cost=", sess.run(cost, feed_dict={
    
    X: train_X, Y: train_Y}), "W=", sess.run(W), "b=", sess.run(b))

8. Use o modelo

O modelo de uso é semelhante ao modelo de teste, ou seja, o nó de valor de perda pode ser substituído por um nó de saída.

Por exemplo, no blog: Beginner Deep Learning (1) Treinamento iterativo e modelo de uso das etapas básicas de desenvolvimento do TensorFlow :

print ("x=0.2,z=", sess.run(z, feed_dict={
    
    X: 0.2}))

Acho que você gosta

Origin blog.csdn.net/qq_45154565/article/details/109854289
Recomendado
Clasificación