TF dans la régression linéaire

compréhension globale

  1. régression linéaire, en utilisant les données existantes ajustées réaliser la prédiction pour une donnée inconnue.
  2. L'échantillon de données d'entrée dans l'échantillon marqué avec l'échantillon sans étiquette; étiquette est la description d'un propriétés soi-disant échantillons, tels que la classification d'image, l'image est une image graphique de l'information de la catégorie d'étiquettes, ce sont les étiquettes de catégorie.
  3. Utilisé dans ce contexte est un cube d'étiquette, chaque échantillon peut être utilisé (X, y) telle représentation, le raccord est d'obtenir une relation de correspondance, notée h, X obtenu en mappant le résultat de prédiction y h « (à savoir, h (x) = y »), ce qui crée un modèle, et l'hypothèse est également connu comme une fonction de h.
  4. modèle de formation est de trouver une fonction d'hypothèse appropriée, le résultat est assez proche pour que l'étiquette de prédiction, à savoir, avec les valeurs de perte indiquent que la perte de proximité, idéalement, le plus proche de 0 que possible perte.
  5. Il existe différentes méthodes de représentation perte, tel que L1, à savoir, la valeur absolue et la différence; L2, à savoir, d'une formule d'écart quadratique moyenne est la suivante : perte = \ frac {1} {N} \ somme (yh (x)) ^ {2}, L2 de la plus largement utilisée.

formation

  1. La formation pour réduire les pertes dans le but d'optimiser en permanence les paramètres de la fonction est supposée, les méthodes d'optimisation comprennent, mais sans s'y limiter, l'algorithme de descente de gradient.
  2. Le soi-disant gradient de descente algorithme mises à jour le paramètre est toujours dans le sens de l'itération de descente de gradient, la perte globale sera plus faible lorsque l'itération continue, lorsque la perte est extrêmement faible changement ou un changement croit que ce modèle de convergence, pour arrêter la formation.
  3. Gradient la taille de l'étape de descente est un super-référence, à savoir le taux d'apprentissage, si le taux d'apprentissage est de 0,01, le gradient a déterminé la valeur de 2,5, l'itération suivante est abaissée depuis la position actuelle de 0,025.
  4. En plus d'apprendre les taux de participation sont super, les couches de réseau, le nombre de neurones dans chaque couche, les filtres sont des paramètres super taille.

Des exemples d'une régression linéaire

  1. Dans l'ensemble: la préparation des données ---> construire des modèles ---> Modèle de formation ---> Prévisions
  2. import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 数据准备
    np.random.seed(5)
    x_data = np.linspace(-1, 1, 100)
    y_data = x_data*2+np.random.rand(*x_data.shape)*0.4
    plt.figure()
    plt.scatter(x_data, y_data)
    
    
    
    # 构建模型 x*w+b
    x = tf.placeholder('float', name='x')
    y = tf.placeholder('float', name='y')
    w = tf.Variable(1.0, name='w0')
    b = tf.Variable(0.0, name='b0')
    
    
    def model(x, w, b):
        return(tf.multiply(x, w)+b)
    
    # 建立模型操作
    preb = model(x, w, b)
    
    # 超参设定
    train_epochs = 10  # 训练轮数
    learning_rate = 0.05  # 学习率
    loss_function = tf.reduce_mean(tf.square(y-preb))  # 利用均方差做loss
    optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)
    step = 0  # 步数计数
    disply_step = 10  # 显示loss的粒度
    loss_list = []  # loss集合
    # 运行与训练
    sess = tf.Session()
    init = tf.global_variables_initializer()
    sess.run(init)
    
    # 逐次执行超参设定的轮数
    for epoch in range(train_epochs):
        for xs, ys in zip(x_data, y_data):  # zip将x,y表示为(x,y)格式
            _, loss = sess.run([optimizer, loss_function], feed_dict={x: xs, y: ys})
            loss_list.append(loss)
            step = step + 1
            if step % disply_step == 0:  # 对应粒度下显示loss值
                print(loss)
        b0temp = b.eval(session=sess)  # 在session会话下求值
        w0temp = w.eval(session=sess)
        plt.plot(x_data, x_data*w0temp+b0temp)  # 每次训练一轮将得到的结果绘制
    
    
    plt.figure()
    plt.plot(loss_list, 'r+')  #绘制总的loss
    plt.show()
    
    
    
    Code spécifique.
Publié cinq articles originaux · louanges gagnées 0 · Vues 65

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41707744/article/details/104668257
conseillé
Classement