• pytorch第一天(tensor数据和csv数据的预处理)lm老师版


    tensor数据:

    1. import torch
    2. import numpy
    3. x = torch.arange(12)
    4. print(x)
    5. print(x.shape)
    6. print(x.numel())
    7. X = x.reshape(3, 4)
    8. print(X)
    9. zeros = torch.zeros((2, 3, 4))
    10. print(zeros)
    11. ones = torch.ones((2,3,4))
    12. print(ones)
    13. randon = torch.randn(3,4)
    14. print(randon)
    15. a = torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
    16. print(a)
    17. exp = torch.exp(a)
    18. print(exp)
    19. X = torch.arange(12, dtype=torch.float32).reshape((3, 4))
    20. print(X)
    21. Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
    22. print(Y)
    23. print(torch.cat((X, Y), dim=0))#第一个括号 从外往里数第一个
    24. print(torch.cat((X, Y), dim=1))#第二个括号 从外往里数第二个
    25. print(X == Y)#这也是个张量
    26. tosum = torch.tensor([1.0,2,3,4])
    27. print(tosum.sum())#加起来也是tensor
    28. print(tosum.sum().item())#这样就是取里面的数 就是一个数了
    29. print(type(tosum.sum().item()))#打印一下类型 是float的类型
    30. a1 = torch.arange(3).reshape(3,1)
    31. b1 = torch.arange(2).reshape(1,2)
    32. print(a1+b1)#相加的时候 会自己填充相同的 boardcasting mechanism
    33. print(X[-1])
    34. print(X[1:3])
    35. X[1, 2] = 9 #修改(1,2)为9
    36. print(X[1])#打印出那一行
    37. X[0:2] = 12 #这样的效果和X[0:2,:]=12是一样的 都是修改前两行为12
    38. print(X)
    39. #id相当于地址一样的东西
    40. #直接对Y操作改变了地址 增加了内存
    41. before = id(Y)
    42. Y = Y + X
    43. print(id(Y) == before)
    44. #对其元素修改操作 不增加内存 地址一样
    45. Z = torch.zeros_like(Y)
    46. print('id(Z):', id(Z))
    47. Z[:] = X + Y
    48. print('id(Z):', id(Z))
    49. #或者用+=连续操作 地址也不会变
    50. before = id(X)
    51. X += Y
    52. print(id(X) == before)
    53. A = X.numpy()
    54. print(A)
    55. print("A现在的类型是:{}".format(type(A)))
    56. B = torch.tensor(A)
    57. print(B)
    58. print("B现在的类型是:{}".format(type(B)))

    运行结果自己对照学习了:

    1. F:\python3\python.exe C:\study\project_1\main.py
    2. tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
    3. torch.Size([12])
    4. 12
    5. tensor([[ 0, 1, 2, 3],
    6. [ 4, 5, 6, 7],
    7. [ 8, 9, 10, 11]])
    8. tensor([[[0., 0., 0., 0.],
    9. [0., 0., 0., 0.],
    10. [0., 0., 0., 0.]],
    11. [[0., 0., 0., 0.],
    12. [0., 0., 0., 0.],
    13. [0., 0., 0., 0.]]])
    14. tensor([[[1., 1., 1., 1.],
    15. [1., 1., 1., 1.],
    16. [1., 1., 1., 1.]],
    17. [[1., 1., 1., 1.],
    18. [1., 1., 1., 1.],
    19. [1., 1., 1., 1.]]])
    20. tensor([[-0.8680, 1.4825, -0.1070, -1.9015],
    21. [-0.7380, -0.3838, -0.2670, -0.2649],
    22. [ 0.9945, -1.5293, 0.0398, 0.1669]])
    23. tensor([[2, 1, 4, 3],
    24. [1, 2, 3, 4],
    25. [4, 3, 2, 1]])
    26. tensor([[ 7.3891, 2.7183, 54.5981, 20.0855],
    27. [ 2.7183, 7.3891, 20.0855, 54.5981],
    28. [54.5981, 20.0855, 7.3891, 2.7183]])
    29. tensor([[ 0., 1., 2., 3.],
    30. [ 4., 5., 6., 7.],
    31. [ 8., 9., 10., 11.]])
    32. tensor([[2., 1., 4., 3.],
    33. [1., 2., 3., 4.],
    34. [4., 3., 2., 1.]])
    35. tensor([[ 0., 1., 2., 3.],
    36. [ 4., 5., 6., 7.],
    37. [ 8., 9., 10., 11.],
    38. [ 2., 1., 4., 3.],
    39. [ 1., 2., 3., 4.],
    40. [ 4., 3., 2., 1.]])
    41. tensor([[ 0., 1., 2., 3., 2., 1., 4., 3.],
    42. [ 4., 5., 6., 7., 1., 2., 3., 4.],
    43. [ 8., 9., 10., 11., 4., 3., 2., 1.]])
    44. tensor([[False, True, False, True],
    45. [False, False, False, False],
    46. [False, False, False, False]])
    47. tensor(10.)
    48. 10.0
    49. <class 'float'>
    50. tensor([[0, 1],
    51. [1, 2],
    52. [2, 3]])
    53. tensor([ 8., 9., 10., 11.])
    54. tensor([[ 4., 5., 6., 7.],
    55. [ 8., 9., 10., 11.]])
    56. tensor([4., 5., 9., 7.])
    57. tensor([[12., 12., 12., 12.],
    58. [12., 12., 12., 12.],
    59. [ 8., 9., 10., 11.]])
    60. False
    61. id(Z): 1801869019800
    62. id(Z): 1801869019800
    63. True
    64. [[26. 25. 28. 27.]
    65. [25. 26. 27. 28.]
    66. [20. 21. 22. 23.]]
    67. A现在的类型是:<class 'numpy.ndarray'>
    68. tensor([[26., 25., 28., 27.],
    69. [25., 26., 27., 28.],
    70. [20., 21., 22., 23.]])
    71. B现在的类型是:<class 'torch.Tensor'>
    72. 进程已结束,退出代码0

    csv一般的数据预处理:

    1. import os
    2. import pandas as pd
    3. import torch
    4. #创造文件夹 和excel csv文件
    5. os.makedirs(os.path.join('..', 'data'), exist_ok=True)
    6. data_file = os.path.join('..', 'data', 'house_tiny.csv')#因为没有 所有会自己创建一个
    7. #打开文件 用写的方式打开
    8. with open(data_file, 'w') as f:
    9. f.write('NumRooms,Alley,Price\n')
    10. f.write('NA,Pave,127500\n')
    11. f.write('2,NA,106000\n')
    12. f.write('4,NA,178100\n')
    13. f.write('NA,NA,140000\n')
    14. #打开csv文件
    15. data = pd.read_csv(data_file)
    16. print(data) # 0,1,2,3会从第二行开始 因为第一行一般是标题和标签
    17. inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]#裁剪0,1行 第2行舍去给input
    18. print(inputs)
    19. print(outputs)#name就会在下面
    20. inputs = inputs.fillna(inputs.mean())#把string的类型变成其他的均值
    21. print(inputs)
    22. inputs = pd.get_dummies(inputs, dummy_na=True)#alley里面全是英文 应该把其编码 这就是编码的方式 是1就会为1
    23. print(inputs)
    24. #都是数字后 就开始转换成tensor类型了
    25. X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
    26. print(X)
    27. print(y)

    运行结果:

    1. F:\python3\python.exe C:\study\project_1\data_preprocess.py
    2. NumRooms Alley Price
    3. 0 NaN Pave 127500
    4. 1 2.0 NaN 106000
    5. 2 4.0 NaN 178100
    6. 3 NaN NaN 140000
    7. NumRooms Alley
    8. 0 NaN Pave
    9. 1 2.0 NaN
    10. 2 4.0 NaN
    11. 3 NaN NaN
    12. 0 127500
    13. 1 106000
    14. 2 178100
    15. 3 140000
    16. Name: Price, dtype: int64
    17. NumRooms Alley
    18. 0 3.0 Pave
    19. 1 2.0 NaN
    20. 2 4.0 NaN
    21. 3 3.0 NaN
    22. NumRooms Alley_Pave Alley_nan
    23. 0 3.0 1 0
    24. 1 2.0 0 1
    25. 2 4.0 0 1
    26. 3 3.0 0 1
    27. tensor([[3., 1., 0.],
    28. [2., 0., 1.],
    29. [4., 0., 1.],
    30. [3., 0., 1.]], dtype=torch.float64)
    31. tensor([127500, 106000, 178100, 140000])
    32. 进程已结束,退出代码0

    第一行代码 创造文件夹的操作和csv操作结果:

    他是跑到上一个级创建的dir

    ok 结束

  • 相关阅读:
    msys2 |arch pacman:tesseract ocr 安装 - 思源笔记自动调用
    微服务·数据一致-事务与分布式事务
    关于Mysql服务无法启动的问题
    Qt接收串口字节数据并存储
    【AI视野·今日Robot 机器人论文速览 第五十九期】Fri, 20 Oct 2023
    【python】美女在召唤,python批量采集~
    kubernetes 起几个节点,就会有几个flannel pod
    【三维地图】开发攻略 —— 详解“GeoJSON”技术和应用场景
    tf.while_loop
    (附源码)ssm宠物领养系统 毕业设计 031654
  • 原文地址:https://blog.csdn.net/weixin_63163242/article/details/133441802