pytorch 入门【task02】设立计算图并自动计算

注:本文代码环境为pytorch cpu版本
本系列博客为跟随开源组织Datawhale学习小组的学习过程记录,任务内容及相关数据集为Datawhale开源组织搜集并无偿提供,饮水思源,特此宣传,欢迎关注Datawhale。
pytorch 入门【task02】设立计算图并自动计算_第1张图片

  • 1、numpy和pytorch实现梯度下降法
    – a、设定初始值
    – b、求取梯度
    – c、在梯度方向上进行参数的更新
  • 2、numpy和pytorch实现线性回归(numpy版本完成,pytorch版本未完成)
  • 3、pytorch实现一个简单的神经网络(未完成)

numpy版本实现梯度下降线性回归:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


def load_data(path):
    """
    pd.read_csv()   names=   读取文件设置列索引
    参考博客:https://blog.csdn.net/sinat_29957455/article/details/79054126
    :param path:
    :return data:
    """
    data_frame = pd.read_csv(path, names=['x', 'y'])  # 读取文件设置列索引
    return data_frame

def pre_data_list(pd_df):
    """
    pandas中的dataframe转换为list:首先先使用np.array()函数把DataFrame转化为np.ndarray(),
                                 再利用tolist()函数把np.ndarray()转为List
    参考博客:https://blog.csdn.net/xiangxianghehe/article/details/72615711
    :param pd_df:
    :return: 转换后的list  : pd_x, pd_y
    """
    # 用pandas中的DataFrame时选取行或列;
    # 参考博客:https://blog.csdn.net/wanglingli95/article/details/78887771
    pd_x, pd_y = np.array(pd_df['x']), np.array(pd_df['y'])
    return pd_x.tolist(), pd_y.tolist()


def my_predict(data_x):
        """
        predict_y = theata1 * data_x + theata2
        :param data_x:
        :return: predict_y:
        """
        predict_y = []
        print("y = %10.5fx + %10.5f" % (a, self.b))  # 拟合得到的曲线

        return predict_y

if __name__ == "__main__":
    # 导入数据
    df = load_data('challenge_dataset.txt')
    # 将数据转换为列表
    x_values, y_values = pre_data_list(df)
    A = np.vstack([x_values, np.ones(len(x_values))]).T

    # https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.lstsq.html
    a, b = np.linalg.lstsq(A, y_values)[0]
    print("y = %10.5fx + %10.5f" % (a, b))

    predict_y = []
    [predict_y.append(a * x + b) for x in x_values]  # 计算拟合曲线的y值
    plt.plot(x_values, predict_y)
    plt.scatter(x_values, y_values)  # 绘制散点图
    plt.show()

运行结果:
在这里插入图片描述pytorch 入门【task02】设立计算图并自动计算_第2张图片

你可能感兴趣的:(pytorch)