一、概念:张量,算子

张量(Tensor):和numpy类似,张量就是一个多维数组。

张量的维度和数组的维度一样。

如下图所示:

pytorch和numpy版本关系 pytorch和numpy区别_numpy


举例:RGB就是一个三维图像,RGB中的每一个像素为一个维度。

Tensor有三个属性:

rank:number of dimensions(维度的数目)

shape:number of rows and columns(行和列的数目)

type: data type of tensor’s elements(数据的类型)

numpy和tensor的联系:二者共享内存,numpy和tensor之间可以进行相互转化。

区别:

1、numpy 默认类型是 float64、int32,tensor 默认类型是float32、int64

2、numpy只支持cpu加速,tensor不仅支持cou加速还支持gpu加速,很牛。

算子

人工智能的算子实际是一定的函数。可以对函数的运算进行定义。说白了就是一种算法.T_T.

二、张量

1.2张量
1.2.1创建张量

生成张量的numpy数组==>转换为对应的张量

1.2.1.1 指定数据创建张量

输出数组生成Numpy对象==>转换为tensor张量。

import torch
import numpy as np
#创建一个数组num1
num_1 = np.array([2.3,3.3,4.0]);
#将num1转换为tensor数据
num_1_to_tensor = torch.tensor(num_1);
print(num_1_to_tensor)
'''
2,3,4为输入的数据
tensor([2.3000, 3.3000, 4.0000], dtype=torch.float64)
'''
1.2.1.2 指定形状创建

生成指定形状的numpy数组==>转换为tensor张量

#创建大小为三行四列的一个张量
num_2 = torch.ones([3,4])
print(num_2)
'''
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
'''
1.2.1.3 指定区间创建

生成指定区间的numpy数组==>转换为tensor张量

import torch
import numpy as np
#指定区间创建张量

arrange_tensor = torch.arange(start=1,end=5,step=1); #1开始,5结束,但是不包括5.
linespace_tensor = torch.linspace(start=1,end=5,steps=5);#1开始,5结束,包括5,steps为平分成几个数,
print('arange Tensor:',arrange_tensor);
print('linespace Tensor:',linespace_tensor);
'''
arange Tensor: tensor([1, 2, 3, 4])
linespace_steps为5的情况下
linespace Tensor: tensor([1., 2., 3., 4., 5.])
line_space_steps为6的情况下
linespace Tensor: tensor([1.0000, 1.8000, 2.6000, 3.4000, 4.2000, 5.0000])
'''
1.2.2张量的属性
1.2.2.1张量的形状
import torch
import numpy as np
#指定区间创建张量
#生成一个2*3*4*5维度大小的张量
ndim_4_Tensor = torch.ones([2,3,4,5])
#输出向量的维度
print("Number of dimensions:", ndim_4_Tensor.ndim)
#输出向量的大小
print("Shape of Tensor:", ndim_4_Tensor.shape)
#输出第0维的大小
print("Elements number along axis 0 of Tensor:", ndim_4_Tensor.shape[0])
#输出最后一维的大小
print("Elements number along the last axis of Tensor:", ndim_4_Tensor.shape[-1])
#输出总数
print('Number of elements in Tensor: ', ndim_4_Tensor.size)
'''
Number of dimensions: 4
Shape of Tensor: torch.Size([2, 3, 4, 5])
Elements number along axis 0 of Tensor: 2
Elements number along the last axis of Tensor: 5
Number of elements in Tensor:  <built-in method size of Tensor object at 0x000001C79A6996D8>
'''
1.2.2.2 形状的改变
#生成数组
num3_array = np.array([[[1, 2, 3, 4, 5],
                        [6, 7, 8, 9, 10]],
                        [[11, 12, 13, 14, 15],
                         [16, 17, 18, 19, 20]],
                        [[21, 22, 23, 24, 25],
                         [26, 27, 28, 29, 30]]]);
num3_tensor = torch.tensor(num3_array);
#改变tensor张量的形状,但是总数最后要求一致
#举例:3*2*5 === 2*3*5
num3_tensor_reshape = torch.reshape(num3_tensor,[2,3,5])
print('Before reshape:',num3_tensor.shape);
print('After reshape:',num3_tensor_reshape.shape);
'''
Before reshape: torch.Size([3, 2, 5])
tensor([[[ 1,  2,  3,  4,  5],
         [ 6,  7,  8,  9, 10]],

        [[11, 12, 13, 14, 15],
         [16, 17, 18, 19, 20]],

        [[21, 22, 23, 24, 25],
         [26, 27, 28, 29, 30]]], dtype=torch.int32)
After reshape: torch.Size([2, 3, 5])
tensor([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
        [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]],
       dtype=torch.int32)
'''
#也可以变成2维的
#2*15 === 3*2*5 === 2*3*5
num3_tensor_reshape_to_2dim = torch.reshape(num3_tensor,[2,15])
print('After reshape to 2 dim:',num3_tensor_reshape_to_2dim.shape)
'''
After reshape to 2 dim: torch.Size([2, 15])
tensor([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
        [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]],
       dtype=torch.int32)
'''

改变张量的形状,我自己的理解昂,就是先把张量变成一维数组,在从第一维开始排,一直排到最后一维。

pytorch和numpy版本关系 pytorch和numpy区别_numpy_02

1.2.2.3 张量的数据类型

张量生成中,如果咱们没有指定数据类型的话。
整数会生成int 64。浮点数会生成float 32

print("int type",torch.tensor(1).dtype)
print("float type",torch.tensor(1.0).dtype)
'''
int type torch.int64
float type torch.float32
'''
#在pytorch官方文档中并没有找到转换类型的函数,类似于飞桨的cast,但可以在生成的时候就改变他的类型
print("int to float",torch.ones([2,2],dtype=torch.float32))
'''
int to float 
tensor([[1., 1.],
        [1., 1.]])
'''
1.2.2.4 张量的设备位置

垃圾电脑没安装gpu版本的pytorch,这里建议大家登录kaggle官网,上面由免费时间的gpu加速,嘎嘎快!!

import numpy as np
import torch
#生成指定数组
num1 = np.array([[1,2,3],[4,5,6]]);
#转换为张量并存储在cpu上
num1_cpu = torch.tensor(num1,device=torch.device("cpu"))
print("The position of num1_tensor(CPU):",num1_cpu.device)
#转换为张量并存储在GPU上
num1_gpu = torch.tensor(num1,device=torch.device("cuda"))
print("The position of num1_tensor(GPU):",num1_gpu.device)
'''
The position of num1_tensor(CPU): cpu
The position of num1_tensor(GPU): cuda:0
AIStudio上介绍的时候有一种固定内存,我在搜索torch.devcie参数的时候并没有找到指定固定内存的参数,所以只生成了在gpu和cpu设备上的张量,由于我的电脑真的垃圾,真烦人,没有gpu版本的torch,是在kaggle官网上利用gpu运行的。
'''
1.2.3 张量与Numpy数组转换(张量和numpy数组之间是可以相互转换)
#numpy数组转换位张量
num_numpy = np.array([[1,2,3],[4,5,6]])
num_numpy_to_tensor = torch.tensor(num_numpy);
print('numpy convert to tensor(定义)',num_numpy_to_tensor)
#也可以使用函数torch.from_numpy
print('numpy convert to tensor(函数)',torch.from_numpy(num_numpy))
#将张量转换为tensor数组,就利用上面的在转换回去
print('tensor convert to numpy',num_numpy_to_tensor.numpy())
'''
numpy convert to tensor(定义) :
tensor([[1, 2, 3],
        [4, 5, 6]], dtype=torch.int32)
numpy convert to tensor(函数) :
tensor([[1, 2, 3],
        [4, 5, 6]], dtype=torch.int32)
tensor convert to numpy :
[[1 2 3]
 [4 5 6]]
'''
1.2.4张量的访问
1.2.4.1 索引和切片
#生成张量
num_numpy = np.array([[1,2,3],[4,5,6]])
num_numpy_to_tensor = torch.tensor(num_numpy);
#索引:和普通的数组获取索引一样索引,对应的下标
for i in range(0, len(num_numpy_to_tensor)):
    print(num_numpy_to_tensor[i])
#切片:和普通的数组切片一样,start stop step
print(num_numpy_to_tensor[0:1:])
'''
tensor([1, 2, 3], dtype=torch.int32)
tensor([4, 5, 6], dtype=torch.int32)
tensor([[1, 2, 3]], dtype=torch.int32)
'''
1.2.4.2 访问张量
#对张量进行访问
num_numpy = np.array([[1,2,3],[4,5,6]])
num_numpy_to_tensor = torch.tensor(num_numpy);
print("访问第一维:",num_numpy_to_tensor[0])
print("访问第一维第二个数字",num_numpy_to_tensor[1,1])
print("访问第一维的所有数字",num_numpy_to_tensor[1:])
'''
访问第一维: tensor([1, 2, 3], dtype=torch.int32)
访问第一维第二个数字:tensor(5, dtype=torch.int32)
访问第一维的所有数字:tensor([[4, 5, 6]], dtype=torch.int32)
'''
1.2.4.3 修改张量
#改变张量中某一个具体的数
print('before change',num_numpy_to_tensor)
#改变第二个的第二个数为2
num_numpy_to_tensor[1,1]=2;
print('after change',num_numpy_to_tensor)
'''
before change tensor([[1, 2, 3],
        [4, 5, 6]], dtype=torch.int32)
after change tensor([[1, 2, 3],
        [4, 2, 6]], dtype=torch.int32)
'''
1.2.5 张量的运算
1.2.5.1 数学运算
num1 = np.array([[1,-1,2],[2,-3,4.1]]);
num1_tensor = torch.tensor(num1);
#转换为绝对值
print('取绝对值abs:',num1_tensor.abs());
print('挨个向上取整:',num1_tensor.floor());
print('挨个四舍五入:',num1_tensor.round())
print('挨个元素计算自然常数为底的指数:',num1_tensor.exp())
print('挨个取自然对数:',num1_tensor.log())
print('逐个元素取倒数:',num1_tensor.reciprocal())
print('逐个元素计算平方',num1_tensor.square())
print('逐个元素计算平方根',num1_tensor.sqrt())
print('逐个元素计算正弦',num1_tensor.sin())
print('逐个元素计算余弦',num1_tensor.cos())
print('逐个元素相加',num1_tensor.add(1))
print('逐个元素相减',num1_tensor.subtract(1))
print('逐个元素相乘',num1_tensor.multiply(2))
print('逐个元素相除',num1_tensor.divide(2))
print('逐个元素取幂',num1_tensor.pow(2))
'''
取绝对值abs: tensor([[1.0000, 1.0000, 2.0000],
        [2.0000, 3.0000, 4.1000]], dtype=torch.float64)
挨个向上取整: tensor([[ 1., -1.,  2.],
        [ 2., -3.,  4.]], dtype=torch.float64)
挨个四舍五入: tensor([[ 1., -1.,  2.],
        [ 2., -3.,  4.]], dtype=torch.float64)
挨个元素计算自然常数为底的指数: tensor([[2.7183e+00, 3.6788e-01, 7.3891e+00],
        [7.3891e+00, 4.9787e-02, 6.0340e+01]], dtype=torch.float64)
挨个取自然对数: tensor([[0.0000,    nan, 0.6931],
        [0.6931,    nan, 1.4110]], dtype=torch.float64)
逐个元素取倒数: tensor([[ 1.0000, -1.0000,  0.5000],
        [ 0.5000, -0.3333,  0.2439]], dtype=torch.float64)
逐个元素计算平方 tensor([[ 1.0000,  1.0000,  4.0000],
        [ 4.0000,  9.0000, 16.8100]], dtype=torch.float64)
逐个元素计算平方根 tensor([[1.0000,    nan, 1.4142],
        [1.4142,    nan, 2.0248]], dtype=torch.float64)
逐个元素计算正弦 tensor([[ 0.8415, -0.8415,  0.9093],
        [ 0.9093, -0.1411, -0.8183]], dtype=torch.float64)
逐个元素计算余弦 tensor([[ 0.5403,  0.5403, -0.4161],
        [-0.4161, -0.9900, -0.5748]], dtype=torch.float64)
逐个元素相加 tensor([[ 2.0000,  0.0000,  3.0000],
        [ 3.0000, -2.0000,  5.1000]], dtype=torch.float64)
逐个元素相减 tensor([[ 0.0000, -2.0000,  1.0000],
        [ 1.0000, -4.0000,  3.1000]], dtype=torch.float64)
逐个元素相乘 tensor([[ 2.0000, -2.0000,  4.0000],
        [ 4.0000, -6.0000,  8.2000]], dtype=torch.float64)
逐个元素相除 tensor([[ 0.5000, -0.5000,  1.0000],
        [ 1.0000, -1.5000,  2.0500]], dtype=torch.float64)
逐个元素取幂 tensor([[ 1.0000,  1.0000,  4.0000],
        [ 4.0000,  9.0000, 16.8100]], dtype=torch.float64)

Process finished with exit code 0

'''
1.2.5.2 逻辑运算
num_numpy = np.array([[1,2,3],[4,5,6]])
num_numpy_to_tensor = torch.tensor(num_numpy);
print('是否为有限',num_numpy_to_tensor.isfinite())
# 判断两个Tensor的每个元素是否相等,并返回形状相同的布尔类Tensor
print("判断两个张量的每个元素是否相等",num_numpy_to_tensor.equal(num_numpy_to_tensor))
print("判断两个张量的每个元是否不相等",num_numpy_to_tensor.not_equal(num_numpy_to_tensor))
print("判断x的元素是否小于y的元素",num_numpy_to_tensor.less(num_numpy_to_tensor))
print("判断x的元素是否小于或等于y的元素",num_numpy_to_tensor.less_equal(num_numpy_to_tensor))
print("判断x的元素是否大于y的对应元素",num_numpy_to_tensor.greater(num_numpy_to_tensor))
print("判断x的元素是否大于等于y的元素",num_numpy_to_tensor.greater_equal(num_numpy_to_tensor))
print("判断元素是否接近",num_numpy_to_tensor.allclose(num_numpy_to_tensor))
"""x.less_than(y)                # 判断Tensor x的元素是否小于Tensor y的对应元素
'''
是否为有限 tensor([[True, True, True],
        [True, True, True]])
判断两个张量的每个元素是否相等 True
判断两个张量的每个元是否不相等 tensor([[False, False, False],
        [False, False, False]])
判断x的元素是否小于y的元素 tensor([[False, False, False],
        [False, False, False]])
判断x的元素是否小于或等于y的元素 tensor([[True, True, True],
        [True, True, True]])
判断x的元素是否大于y的对应元素 tensor([[False, False, False],
        [False, False, False]])
判断x的元素是否大于等于y的元素 tensor([[True, True, True],
        [True, True, True]])
判断元素是否接近 True

Process finished with exit code 0

'''
1.2.5.3 矩阵运算
num_numpy = np.array([[1,2.0,3],[4,5,6]])
num_numpy_to_tensor = torch.tensor(num_numpy);
#矩阵的转置
print(num_numpy_to_tensor.t())
#交换第0维和第1维
print(torch.transpose(num_numpy_to_tensor,1,0))
#矩阵的弗洛贝尼乌斯范数
print(torch.norm(num_numpy_to_tensor,p="fro"))
#矩阵(x-y)的2范数
print(num_numpy_to_tensor.dist(num_numpy_to_tensor,p=2))
#矩阵乘法
print(num_numpy_to_tensor.matmul(num_numpy_to_tensor.t()))

'''
tensor([[1., 4.],
        [2., 5.],
        [3., 6.]], dtype=torch.float64)
tensor([[1., 4.],
        [2., 5.],
        [3., 6.]], dtype=torch.float64)
tensor(9.5394, dtype=torch.float64)
tensor(0., dtype=torch.float64)
tensor([[14., 32.],
        [32., 77.]], dtype=torch.float64)
'''
1.2.5.4 广播机制
x_numpy = np.ones((2,3,1,5))
y_numpy = np.ones((3,4,1))
x_tensor = torch.tensor(x_numpy)
y_tensor = torch.tensor(y_numpy)
z = x_tensor+y_tensor
print('broadcasting with two different shape tensor:',z.shape);
'''
broadcasting with two different shape tensor: torch.Size([2, 3, 4, 5])
'''

从输出结果看,此时x和y是不能广播的,因为在第一次从后往前的比较中,4和6不相等,不符合广播规则。

广播机制的计算规则
现在我们知道在什么情况下两个张量是可以广播的。两个张量进行广播后的结果张量的形状计算规则如下:

1)如果两个张量shape的长度不一致,那么需要在较小长度的shape前添加1,直到两个张量的形状长度相等。

2) 保证两个张量形状相等之后,每个维度上的结果维度就是当前维度上较大的那个。

以张量x和y进行广播为例,x的shape为[2, 3, 1,5],张量y的shape为[3,4,1]。首先张量y的形状长度较小,因此要将该张量形状补齐为[1, 3, 4, 1],再对两个张量的每一维进行比较。从第一维看,x在一维上的大小为2,y为1,因此,结果张量在第一维的大小为2。以此类推,对每一维进行比较,得到结果张量的形状为[2, 3, 4, 5]。

由于矩阵乘法函数paddle.matmul在深度学习中使用非常多,这里需要特别说明一下它的广播规则:

1)如果两个张量均为一维,则获得点积结果。

2) 如果两个张量都是二维的,则获得矩阵与矩阵的乘积。

3) 如果张量x是一维,y是二维,则将x的shape转换为[1, D],与y进行矩阵相乘后再删除前置尺寸。

4) 如果张量x是二维,y是一维,则获得矩阵与向量的乘积。

5) 如果两个张量都是N维张量(N > 2),则根据广播规则广播非矩阵维度(除最后两个维度外其余维度)。比如:如果输入x是形状为[j,1,n,m]的张量,另一个y是[k,m,p]的张量,则输出张量的形状为[j,k,n,p]。

三. 使用pytorch实现数据预处理
1. 读取数据集 house_tiny.csv、boston_house_prices.csv、Iris.csv
import pandas as pd
import torch
#读取数据集
data_iris = pd.read_csv('Iris.csv')
data_house_tiny = pd.read_csv('house_tiny.csv')
data_boston_house_prices = pd.read_csv('boston_house_prices.csv')
#输出数据集
print(data_iris)
print(data_house_tiny)
print(data_boston_house_prices)
'''
      Id  SepalLengthCm  ...  PetalWidthCm         Species
0      1            5.1  ...           0.2     Iris-setosa
1      2            4.9  ...           0.2     Iris-setosa
2      3            4.7  ...           0.2     Iris-setosa
3      4            4.6  ...           0.2     Iris-setosa
4      5            5.0  ...           0.2     Iris-setosa
..   ...            ...  ...           ...             ...
145  146            6.7  ...           2.3  Iris-virginica
146  147            6.3  ...           1.9  Iris-virginica
147  148            6.5  ...           2.0  Iris-virginica
148  149            6.2  ...           2.3  Iris-virginica
149  150            5.9  ...           1.8  Iris-virginica

[150 rows x 6 columns]
   NumRooms Alley   Price
0       NaN  Pave  127500
1       2.0   NaN  106000
2       4.0   NaN  178100
3       NaN   NaN  140000
        CRIM    ZN  INDUS  CHAS    NOX  ...  RAD  TAX  PTRATIO  LSTAT  MEDV
0    0.00632  18.0   2.31     0  0.538  ...    1  296     15.3   4.98  24.0
1    0.02731   0.0   7.07     0  0.469  ...    2  242     17.8   9.14  21.6
2    0.02729   0.0   7.07     0  0.469  ...    2  242     17.8   4.03  34.7
3    0.03237   0.0   2.18     0  0.458  ...    3  222     18.7   2.94  33.4
4    0.06905   0.0   2.18     0  0.458  ...    3  222     18.7   5.33  36.2
..       ...   ...    ...   ...    ...  ...  ...  ...      ...    ...   ...
501  0.06263   0.0  11.93     0  0.573  ...    1  273     21.0   9.67  22.4
502  0.04527   0.0  11.93     0  0.573  ...    1  273     21.0   9.08  20.6
503  0.06076   0.0  11.93     0  0.573  ...    1  273     21.0   5.64  23.9
504  0.10959   0.0  11.93     0  0.573  ...    1  273     21.0   6.48  22.0
505  0.04741   0.0  11.93     0  0.573  ...    1  273     21.0   7.88  11.9

[506 rows x 13 columns]

Process finished with exit code 0

'''
  1. 处理缺失值
import pandas as pd
import torch
#读取数据集
data_iris = pd.read_csv('Iris.csv')
data_house_tiny = pd.read_csv('house_tiny.csv')
data_boston_house_prices = pd.read_csv('boston_house_prices.csv')
#输出数据集
print(data_iris)
print(data_house_tiny)
print(data_boston_house_prices)

#处理缺失值和离散值
input,output = data_iris.iloc[:,0:5],data_iris.iloc[:,5]
#使用均值处理缺失值
input = input.fillna(input.mean())
print(input)
input = np.array(input)

#处理离散值
output = pd.get_dummies(output,dummy_na=True)
output = np.array(output)
print(input,output)

#读取输入输出
input_house_tiny,output_house_tiny = data_house_tiny.iloc[:,0:2],data_house_tiny.iloc[:,2]
#处理缺失值
input_house_tiny = input_house_tiny.fillna(input_house_tiny.mean())
#处理离散值
input_house_tiny = pd.get_dummies(input_house_tiny,dummy_na=True)
input_house_tiny,output_house_tiny = np.array(input_house_tiny),np.array(output_house_tiny)
priint(input_house_tiny,output_house_tiny)


#读取输出
input_boston_house_prices,output_boston_house_prices = data_boston_house_prices.iloc[:,0:12],data_boston_house_prices.iloc[:,12]
#处理缺失值
input_boston_house_prices,output_boston_house_prices = input_boston_house_prices.fillna(input_boston_house_prices.mean()),output_boston_house_prices.fillna(output_boston_house_prices.mean())
print(input_boston_house_prices,output_boston_house_prices)
'''
[[1.00e+00 5.10e+00 3.50e+00 1.40e+00 2.00e-01]
 [2.00e+00 4.90e+00 3.00e+00 1.40e+00 2.00e-01]
 [3.00e+00 4.70e+00 3.20e+00 1.30e+00 2.00e-01]
 [4.00e+00 4.60e+00 3.10e+00 1.50e+00 2.00e-01]
 [5.00e+00 5.00e+00 3.60e+00 1.40e+00 2.00e-01]
 [6.00e+00 5.40e+00 3.90e+00 1.70e+00 4.00e-01]
 [7.00e+00 4.60e+00 3.40e+00 1.40e+00 3.00e-01]
 [8.00e+00 5.00e+00 3.40e+00 1.50e+00 2.00e-01]
 [9.00e+00 4.40e+00 2.90e+00 1.40e+00 2.00e-01]
 [1.00e+01 4.90e+00 3.10e+00 1.50e+00 1.00e-01]
 [1.10e+01 5.40e+00 3.70e+00 1.50e+00 2.00e-01]
 [1.20e+01 4.80e+00 3.40e+00 1.60e+00 2.00e-01]
 [1.30e+01 4.80e+00 3.00e+00 1.40e+00 1.00e-01]
 [1.40e+01 4.30e+00 3.00e+00 1.10e+00 1.00e-01]
 [1.50e+01 5.80e+00 4.00e+00 1.20e+00 2.00e-01]
 [1.60e+01 5.70e+00 4.40e+00 1.50e+00 4.00e-01]
 [1.70e+01 5.40e+00 3.90e+00 1.30e+00 4.00e-01]
 [1.80e+01 5.10e+00 3.50e+00 1.40e+00 3.00e-01]
 [1.90e+01 5.70e+00 3.80e+00 1.70e+00 3.00e-01]
 [2.00e+01 5.10e+00 3.80e+00 1.50e+00 3.00e-01]
 [2.10e+01 5.40e+00 3.40e+00 1.70e+00 2.00e-01]
 [2.20e+01 5.10e+00 3.70e+00 1.50e+00 4.00e-01]
 [2.30e+01 4.60e+00 3.60e+00 1.00e+00 2.00e-01]
 [2.40e+01 5.10e+00 3.30e+00 1.70e+00 5.00e-01]
 [2.50e+01 4.80e+00 3.40e+00 1.90e+00 2.00e-01]
 [2.60e+01 5.00e+00 3.00e+00 1.60e+00 2.00e-01]
 [2.70e+01 5.00e+00 3.40e+00 1.60e+00 4.00e-01]
 [2.80e+01 5.20e+00 3.50e+00 1.50e+00 2.00e-01]
 [2.90e+01 5.20e+00 3.40e+00 1.40e+00 2.00e-01]
 [3.00e+01 4.70e+00 3.20e+00 1.60e+00 2.00e-01]
 [3.10e+01 4.80e+00 3.10e+00 1.60e+00 2.00e-01]
 [3.20e+01 5.40e+00 3.40e+00 1.50e+00 4.00e-01]
 [3.30e+01 5.20e+00 4.10e+00 1.50e+00 1.00e-01]
 [3.40e+01 5.50e+00 4.20e+00 1.40e+00 2.00e-01]
 [3.50e+01 4.90e+00 3.10e+00 1.50e+00 1.00e-01]
 [3.60e+01 5.00e+00 3.20e+00 1.20e+00 2.00e-01]
 [3.70e+01 5.50e+00 3.50e+00 1.30e+00 2.00e-01]
 [3.80e+01 4.90e+00 3.10e+00 1.50e+00 1.00e-01]
 [3.90e+01 4.40e+00 3.00e+00 1.30e+00 2.00e-01]
 [4.00e+01 5.10e+00 3.40e+00 1.50e+00 2.00e-01]
 [4.10e+01 5.00e+00 3.50e+00 1.30e+00 3.00e-01]
 [4.20e+01 4.50e+00 2.30e+00 1.30e+00 3.00e-01]
 [4.30e+01 4.40e+00 3.20e+00 1.30e+00 2.00e-01]
 [4.40e+01 5.00e+00 3.50e+00 1.60e+00 6.00e-01]
 [4.50e+01 5.10e+00 3.80e+00 1.90e+00 4.00e-01]
 [4.60e+01 4.80e+00 3.00e+00 1.40e+00 3.00e-01]
 [4.70e+01 5.10e+00 3.80e+00 1.60e+00 2.00e-01]
 [4.80e+01 4.60e+00 3.20e+00 1.40e+00 2.00e-01]
 [4.90e+01 5.30e+00 3.70e+00 1.50e+00 2.00e-01]
 [5.00e+01 5.00e+00 3.30e+00 1.40e+00 2.00e-01]
 [5.10e+01 7.00e+00 3.20e+00 4.70e+00 1.40e+00]
 [5.20e+01 6.40e+00 3.20e+00 4.50e+00 1.50e+00]
 [5.30e+01 6.90e+00 3.10e+00 4.90e+00 1.50e+00]
 [5.40e+01 5.50e+00 2.30e+00 4.00e+00 1.30e+00]
 [5.50e+01 6.50e+00 2.80e+00 4.60e+00 1.50e+00]
 [5.60e+01 5.70e+00 2.80e+00 4.50e+00 1.30e+00]
 [5.70e+01 6.30e+00 3.30e+00 4.70e+00 1.60e+00]
 [5.80e+01 4.90e+00 2.40e+00 3.30e+00 1.00e+00]
 [5.90e+01 6.60e+00 2.90e+00 4.60e+00 1.30e+00]
 [6.00e+01 5.20e+00 2.70e+00 3.90e+00 1.40e+00]
 [6.10e+01 5.00e+00 2.00e+00 3.50e+00 1.00e+00]
 [6.20e+01 5.90e+00 3.00e+00 4.20e+00 1.50e+00]
 [6.30e+01 6.00e+00 2.20e+00 4.00e+00 1.00e+00]
 [6.40e+01 6.10e+00 2.90e+00 4.70e+00 1.40e+00]
 [6.50e+01 5.60e+00 2.90e+00 3.60e+00 1.30e+00]
 [6.60e+01 6.70e+00 3.10e+00 4.40e+00 1.40e+00]
 [6.70e+01 5.60e+00 3.00e+00 4.50e+00 1.50e+00]
 [6.80e+01 5.80e+00 2.70e+00 4.10e+00 1.00e+00]
 [6.90e+01 6.20e+00 2.20e+00 4.50e+00 1.50e+00]
 [7.00e+01 5.60e+00 2.50e+00 3.90e+00 1.10e+00]
 [7.10e+01 5.90e+00 3.20e+00 4.80e+00 1.80e+00]
 [7.20e+01 6.10e+00 2.80e+00 4.00e+00 1.30e+00]
 [7.30e+01 6.30e+00 2.50e+00 4.90e+00 1.50e+00]
 [7.40e+01 6.10e+00 2.80e+00 4.70e+00 1.20e+00]
 [7.50e+01 6.40e+00 2.90e+00 4.30e+00 1.30e+00]
 [7.60e+01 6.60e+00 3.00e+00 4.40e+00 1.40e+00]
 [7.70e+01 6.80e+00 2.80e+00 4.80e+00 1.40e+00]
 [7.80e+01 6.70e+00 3.00e+00 5.00e+00 1.70e+00]
 [7.90e+01 6.00e+00 2.90e+00 4.50e+00 1.50e+00]
 [8.00e+01 5.70e+00 2.60e+00 3.50e+00 1.00e+00]
 [8.10e+01 5.50e+00 2.40e+00 3.80e+00 1.10e+00]
 [8.20e+01 5.50e+00 2.40e+00 3.70e+00 1.00e+00]
 [8.30e+01 5.80e+00 2.70e+00 3.90e+00 1.20e+00]
 [8.40e+01 6.00e+00 2.70e+00 5.10e+00 1.60e+00]
 [8.50e+01 5.40e+00 3.00e+00 4.50e+00 1.50e+00]
 [8.60e+01 6.00e+00 3.40e+00 4.50e+00 1.60e+00]
 [8.70e+01 6.70e+00 3.10e+00 4.70e+00 1.50e+00]
 [8.80e+01 6.30e+00 2.30e+00 4.40e+00 1.30e+00]
 [8.90e+01 5.60e+00 3.00e+00 4.10e+00 1.30e+00]
 [9.00e+01 5.50e+00 2.50e+00 4.00e+00 1.30e+00]
 [9.10e+01 5.50e+00 2.60e+00 4.40e+00 1.20e+00]
 [9.20e+01 6.10e+00 3.00e+00 4.60e+00 1.40e+00]
 [9.30e+01 5.80e+00 2.60e+00 4.00e+00 1.20e+00]
 [9.40e+01 5.00e+00 2.30e+00 3.30e+00 1.00e+00]
 [9.50e+01 5.60e+00 2.70e+00 4.20e+00 1.30e+00]
 [9.60e+01 5.70e+00 3.00e+00 4.20e+00 1.20e+00]
 [9.70e+01 5.70e+00 2.90e+00 4.20e+00 1.30e+00]
 [9.80e+01 6.20e+00 2.90e+00 4.30e+00 1.30e+00]
 [9.90e+01 5.10e+00 2.50e+00 3.00e+00 1.10e+00]
 [1.00e+02 5.70e+00 2.80e+00 4.10e+00 1.30e+00]
 [1.01e+02 6.30e+00 3.30e+00 6.00e+00 2.50e+00]
 [1.02e+02 5.80e+00 2.70e+00 5.10e+00 1.90e+00]
 [1.03e+02 7.10e+00 3.00e+00 5.90e+00 2.10e+00]
 [1.04e+02 6.30e+00 2.90e+00 5.60e+00 1.80e+00]
 [1.05e+02 6.50e+00 3.00e+00 5.80e+00 2.20e+00]
 [1.06e+02 7.60e+00 3.00e+00 6.60e+00 2.10e+00]
 [1.07e+02 4.90e+00 2.50e+00 4.50e+00 1.70e+00]
 [1.08e+02 7.30e+00 2.90e+00 6.30e+00 1.80e+00]
 [1.09e+02 6.70e+00 2.50e+00 5.80e+00 1.80e+00]
 [1.10e+02 7.20e+00 3.60e+00 6.10e+00 2.50e+00]
 [1.11e+02 6.50e+00 3.20e+00 5.10e+00 2.00e+00]
 [1.12e+02 6.40e+00 2.70e+00 5.30e+00 1.90e+00]
 [1.13e+02 6.80e+00 3.00e+00 5.50e+00 2.10e+00]
 [1.14e+02 5.70e+00 2.50e+00 5.00e+00 2.00e+00]
 [1.15e+02 5.80e+00 2.80e+00 5.10e+00 2.40e+00]
 [1.16e+02 6.40e+00 3.20e+00 5.30e+00 2.30e+00]
 [1.17e+02 6.50e+00 3.00e+00 5.50e+00 1.80e+00]
 [1.18e+02 7.70e+00 3.80e+00 6.70e+00 2.20e+00]
 [1.19e+02 7.70e+00 2.60e+00 6.90e+00 2.30e+00]
 [1.20e+02 6.00e+00 2.20e+00 5.00e+00 1.50e+00]
 [1.21e+02 6.90e+00 3.20e+00 5.70e+00 2.30e+00]
 [1.22e+02 5.60e+00 2.80e+00 4.90e+00 2.00e+00]
 [1.23e+02 7.70e+00 2.80e+00 6.70e+00 2.00e+00]
 [1.24e+02 6.30e+00 2.70e+00 4.90e+00 1.80e+00]
 [1.25e+02 6.70e+00 3.30e+00 5.70e+00 2.10e+00]
 [1.26e+02 7.20e+00 3.20e+00 6.00e+00 1.80e+00]
 [1.27e+02 6.20e+00 2.80e+00 4.80e+00 1.80e+00]
 [1.28e+02 6.10e+00 3.00e+00 4.90e+00 1.80e+00]
 [1.29e+02 6.40e+00 2.80e+00 5.60e+00 2.10e+00]
 [1.30e+02 7.20e+00 3.00e+00 5.80e+00 1.60e+00]
 [1.31e+02 7.40e+00 2.80e+00 6.10e+00 1.90e+00]
 [1.32e+02 7.90e+00 3.80e+00 6.40e+00 2.00e+00]
 [1.33e+02 6.40e+00 2.80e+00 5.60e+00 2.20e+00]
 [1.34e+02 6.30e+00 2.80e+00 5.10e+00 1.50e+00]
 [1.35e+02 6.10e+00 2.60e+00 5.60e+00 1.40e+00]
 [1.36e+02 7.70e+00 3.00e+00 6.10e+00 2.30e+00]
 [1.37e+02 6.30e+00 3.40e+00 5.60e+00 2.40e+00]
 [1.38e+02 6.40e+00 3.10e+00 5.50e+00 1.80e+00]
 [1.39e+02 6.00e+00 3.00e+00 4.80e+00 1.80e+00]
 [1.40e+02 6.90e+00 3.10e+00 5.40e+00 2.10e+00]
 [1.41e+02 6.70e+00 3.10e+00 5.60e+00 2.40e+00]
 [1.42e+02 6.90e+00 3.10e+00 5.10e+00 2.30e+00]
 [1.43e+02 5.80e+00 2.70e+00 5.10e+00 1.90e+00]
 [1.44e+02 6.80e+00 3.20e+00 5.90e+00 2.30e+00]
 [1.45e+02 6.70e+00 3.30e+00 5.70e+00 2.50e+00]
 [1.46e+02 6.70e+00 3.00e+00 5.20e+00 2.30e+00]
 [1.47e+02 6.30e+00 2.50e+00 5.00e+00 1.90e+00]
 [1.48e+02 6.50e+00 3.00e+00 5.20e+00 2.00e+00]
 [1.49e+02 6.20e+00 3.40e+00 5.40e+00 2.30e+00]
 [1.50e+02 5.90e+00 3.00e+00 5.10e+00 1.80e+00]] [[1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [1 0 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 1 0 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]
 [0 0 1 0]]
[[3. 1. 0.]
 [2. 0. 1.]
 [4. 0. 1.]
 [3. 0. 1.]] [127500 106000 178100 140000]
        CRIM    ZN  INDUS  CHAS    NOX  ...     DIS  RAD  TAX  PTRATIO  LSTAT
0    0.00632  18.0   2.31     0  0.538  ...  4.0900    1  296     15.3   4.98
1    0.02731   0.0   7.07     0  0.469  ...  4.9671    2  242     17.8   9.14
2    0.02729   0.0   7.07     0  0.469  ...  4.9671    2  242     17.8   4.03
3    0.03237   0.0   2.18     0  0.458  ...  6.0622    3  222     18.7   2.94
4    0.06905   0.0   2.18     0  0.458  ...  6.0622    3  222     18.7   5.33
..       ...   ...    ...   ...    ...  ...     ...  ...  ...      ...    ...
501  0.06263   0.0  11.93     0  0.573  ...  2.4786    1  273     21.0   9.67
502  0.04527   0.0  11.93     0  0.573  ...  2.2875    1  273     21.0   9.08
503  0.06076   0.0  11.93     0  0.573  ...  2.1675    1  273     21.0   5.64
504  0.10959   0.0  11.93     0  0.573  ...  2.3889    1  273     21.0   6.48
505  0.04741   0.0  11.93     0  0.573  ...  2.5050    1  273     21.0   7.88

[506 rows x 12 columns] 0      24.0
1      21.6
2      34.7
3      33.4
4      36.2
       ... 
501    22.4
502    20.6
503    23.9
504    22.0
505    11.9
Name: MEDV, Length: 506, dtype: float64

Process finished with exit code 0

'''
  1. 转换为张量格式
import pandas as pd
import torch
#读取数据集
data_iris = pd.read_csv('Iris.csv')
data_house_tiny = pd.read_csv('house_tiny.csv')
data_boston_house_prices = pd.read_csv('boston_house_prices.csv')
#处理缺失值和离散值
input,output = data_iris.iloc[:,0:5],data_iris.iloc[:,5]
#使用均值处理缺失值
input = input.fillna(input.mean())
input = np.array(input)

#处理离散值
output = pd.get_dummies(output,dummy_na=True)
output = np.array(output)
#转换为张量形式
input_tensor,output_tensor = torch.tensor(input),torch.tensor(output)
print(input_tensor,output_tensor)
#读取输入输出
input_house_tiny,output_house_tiny = data_house_tiny.iloc[:,0:2],data_house_tiny.iloc[:,2]
#处理缺失值
input_house_tiny = input_house_tiny.fillna(input_house_tiny.mean())
#处理离散值
input_house_tiny = pd.get_dummies(input_house_tiny,dummy_na=True)
input_house_tiny,output_house_tiny = np.array(input_house_tiny),np.array(output_house_tiny)
#转换为张量形式
input_house_tiny_tensor,output_house_tiny_tensor = torch.tensor(input_house_tiny),torch.tensor(output_house_tiny)
print(input_house_tiny_tensor,output_house_tiny_tensor)


#读取输出
input_boston_house_prices,output_boston_house_prices = data_boston_house_prices.iloc[:,0:12],data_boston_house_prices.iloc[:,12]
#处理缺失值
input_boston_house_prices,output_boston_house_prices = input_boston_house_prices.fillna(input_boston_house_prices.mean()),output_boston_house_prices.fillna(output_boston_house_prices.mean())
#转换为张量形式
input_boston_house_prices_numpy,output_boston_house_prices_numpy = np.array(input_boston_house_prices),np.array(output_boston_house_prices)
input_boston_house_prices_tensor,output_boston_house_prices_tensor = torch.tensor(input_boston_house_prices_numpy),torch.tensor(output_boston_house_prices_numpy)
print(input_boston_house_prices_tensor,output_boston_house_prices_tensor)

'''
tensor([[1.0000e+00, 5.1000e+00, 3.5000e+00, 1.4000e+00, 2.0000e-01],
        [2.0000e+00, 4.9000e+00, 3.0000e+00, 1.4000e+00, 2.0000e-01],
        [3.0000e+00, 4.7000e+00, 3.2000e+00, 1.3000e+00, 2.0000e-01],
        [4.0000e+00, 4.6000e+00, 3.1000e+00, 1.5000e+00, 2.0000e-01],
        [5.0000e+00, 5.0000e+00, 3.6000e+00, 1.4000e+00, 2.0000e-01],
        [6.0000e+00, 5.4000e+00, 3.9000e+00, 1.7000e+00, 4.0000e-01],
        [7.0000e+00, 4.6000e+00, 3.4000e+00, 1.4000e+00, 3.0000e-01],
        [8.0000e+00, 5.0000e+00, 3.4000e+00, 1.5000e+00, 2.0000e-01],
        [9.0000e+00, 4.4000e+00, 2.9000e+00, 1.4000e+00, 2.0000e-01],
        [1.0000e+01, 4.9000e+00, 3.1000e+00, 1.5000e+00, 1.0000e-01],
        [1.1000e+01, 5.4000e+00, 3.7000e+00, 1.5000e+00, 2.0000e-01],
        [1.2000e+01, 4.8000e+00, 3.4000e+00, 1.6000e+00, 2.0000e-01],
        [1.3000e+01, 4.8000e+00, 3.0000e+00, 1.4000e+00, 1.0000e-01],
        [1.4000e+01, 4.3000e+00, 3.0000e+00, 1.1000e+00, 1.0000e-01],
        [1.5000e+01, 5.8000e+00, 4.0000e+00, 1.2000e+00, 2.0000e-01],
        [1.6000e+01, 5.7000e+00, 4.4000e+00, 1.5000e+00, 4.0000e-01],
        [1.7000e+01, 5.4000e+00, 3.9000e+00, 1.3000e+00, 4.0000e-01],
        [1.8000e+01, 5.1000e+00, 3.5000e+00, 1.4000e+00, 3.0000e-01],
        [1.9000e+01, 5.7000e+00, 3.8000e+00, 1.7000e+00, 3.0000e-01],
        [2.0000e+01, 5.1000e+00, 3.8000e+00, 1.5000e+00, 3.0000e-01],
        [2.1000e+01, 5.4000e+00, 3.4000e+00, 1.7000e+00, 2.0000e-01],
        [2.2000e+01, 5.1000e+00, 3.7000e+00, 1.5000e+00, 4.0000e-01],
        [2.3000e+01, 4.6000e+00, 3.6000e+00, 1.0000e+00, 2.0000e-01],
        [2.4000e+01, 5.1000e+00, 3.3000e+00, 1.7000e+00, 5.0000e-01],
        [2.5000e+01, 4.8000e+00, 3.4000e+00, 1.9000e+00, 2.0000e-01],
        [2.6000e+01, 5.0000e+00, 3.0000e+00, 1.6000e+00, 2.0000e-01],
        [2.7000e+01, 5.0000e+00, 3.4000e+00, 1.6000e+00, 4.0000e-01],
        [2.8000e+01, 5.2000e+00, 3.5000e+00, 1.5000e+00, 2.0000e-01],
        [2.9000e+01, 5.2000e+00, 3.4000e+00, 1.4000e+00, 2.0000e-01],
        [3.0000e+01, 4.7000e+00, 3.2000e+00, 1.6000e+00, 2.0000e-01],
        [3.1000e+01, 4.8000e+00, 3.1000e+00, 1.6000e+00, 2.0000e-01],
        [3.2000e+01, 5.4000e+00, 3.4000e+00, 1.5000e+00, 4.0000e-01],
        [3.3000e+01, 5.2000e+00, 4.1000e+00, 1.5000e+00, 1.0000e-01],
        [3.4000e+01, 5.5000e+00, 4.2000e+00, 1.4000e+00, 2.0000e-01],
        [3.5000e+01, 4.9000e+00, 3.1000e+00, 1.5000e+00, 1.0000e-01],
        [3.6000e+01, 5.0000e+00, 3.2000e+00, 1.2000e+00, 2.0000e-01],
        [3.7000e+01, 5.5000e+00, 3.5000e+00, 1.3000e+00, 2.0000e-01],
        [3.8000e+01, 4.9000e+00, 3.1000e+00, 1.5000e+00, 1.0000e-01],
        [3.9000e+01, 4.4000e+00, 3.0000e+00, 1.3000e+00, 2.0000e-01],
        [4.0000e+01, 5.1000e+00, 3.4000e+00, 1.5000e+00, 2.0000e-01],
        [4.1000e+01, 5.0000e+00, 3.5000e+00, 1.3000e+00, 3.0000e-01],
        [4.2000e+01, 4.5000e+00, 2.3000e+00, 1.3000e+00, 3.0000e-01],
        [4.3000e+01, 4.4000e+00, 3.2000e+00, 1.3000e+00, 2.0000e-01],
        [4.4000e+01, 5.0000e+00, 3.5000e+00, 1.6000e+00, 6.0000e-01],
        [4.5000e+01, 5.1000e+00, 3.8000e+00, 1.9000e+00, 4.0000e-01],
        [4.6000e+01, 4.8000e+00, 3.0000e+00, 1.4000e+00, 3.0000e-01],
        [4.7000e+01, 5.1000e+00, 3.8000e+00, 1.6000e+00, 2.0000e-01],
        [4.8000e+01, 4.6000e+00, 3.2000e+00, 1.4000e+00, 2.0000e-01],
        [4.9000e+01, 5.3000e+00, 3.7000e+00, 1.5000e+00, 2.0000e-01],
        [5.0000e+01, 5.0000e+00, 3.3000e+00, 1.4000e+00, 2.0000e-01],
        [5.1000e+01, 7.0000e+00, 3.2000e+00, 4.7000e+00, 1.4000e+00],
        [5.2000e+01, 6.4000e+00, 3.2000e+00, 4.5000e+00, 1.5000e+00],
        [5.3000e+01, 6.9000e+00, 3.1000e+00, 4.9000e+00, 1.5000e+00],
        [5.4000e+01, 5.5000e+00, 2.3000e+00, 4.0000e+00, 1.3000e+00],
        [5.5000e+01, 6.5000e+00, 2.8000e+00, 4.6000e+00, 1.5000e+00],
        [5.6000e+01, 5.7000e+00, 2.8000e+00, 4.5000e+00, 1.3000e+00],
        [5.7000e+01, 6.3000e+00, 3.3000e+00, 4.7000e+00, 1.6000e+00],
        [5.8000e+01, 4.9000e+00, 2.4000e+00, 3.3000e+00, 1.0000e+00],
        [5.9000e+01, 6.6000e+00, 2.9000e+00, 4.6000e+00, 1.3000e+00],
        [6.0000e+01, 5.2000e+00, 2.7000e+00, 3.9000e+00, 1.4000e+00],
        [6.1000e+01, 5.0000e+00, 2.0000e+00, 3.5000e+00, 1.0000e+00],
        [6.2000e+01, 5.9000e+00, 3.0000e+00, 4.2000e+00, 1.5000e+00],
        [6.3000e+01, 6.0000e+00, 2.2000e+00, 4.0000e+00, 1.0000e+00],
        [6.4000e+01, 6.1000e+00, 2.9000e+00, 4.7000e+00, 1.4000e+00],
        [6.5000e+01, 5.6000e+00, 2.9000e+00, 3.6000e+00, 1.3000e+00],
        [6.6000e+01, 6.7000e+00, 3.1000e+00, 4.4000e+00, 1.4000e+00],
        [6.7000e+01, 5.6000e+00, 3.0000e+00, 4.5000e+00, 1.5000e+00],
        [6.8000e+01, 5.8000e+00, 2.7000e+00, 4.1000e+00, 1.0000e+00],
        [6.9000e+01, 6.2000e+00, 2.2000e+00, 4.5000e+00, 1.5000e+00],
        [7.0000e+01, 5.6000e+00, 2.5000e+00, 3.9000e+00, 1.1000e+00],
        [7.1000e+01, 5.9000e+00, 3.2000e+00, 4.8000e+00, 1.8000e+00],
        [7.2000e+01, 6.1000e+00, 2.8000e+00, 4.0000e+00, 1.3000e+00],
        [7.3000e+01, 6.3000e+00, 2.5000e+00, 4.9000e+00, 1.5000e+00],
        [7.4000e+01, 6.1000e+00, 2.8000e+00, 4.7000e+00, 1.2000e+00],
        [7.5000e+01, 6.4000e+00, 2.9000e+00, 4.3000e+00, 1.3000e+00],
        [7.6000e+01, 6.6000e+00, 3.0000e+00, 4.4000e+00, 1.4000e+00],
        [7.7000e+01, 6.8000e+00, 2.8000e+00, 4.8000e+00, 1.4000e+00],
        [7.8000e+01, 6.7000e+00, 3.0000e+00, 5.0000e+00, 1.7000e+00],
        [7.9000e+01, 6.0000e+00, 2.9000e+00, 4.5000e+00, 1.5000e+00],
        [8.0000e+01, 5.7000e+00, 2.6000e+00, 3.5000e+00, 1.0000e+00],
        [8.1000e+01, 5.5000e+00, 2.4000e+00, 3.8000e+00, 1.1000e+00],
        [8.2000e+01, 5.5000e+00, 2.4000e+00, 3.7000e+00, 1.0000e+00],
        [8.3000e+01, 5.8000e+00, 2.7000e+00, 3.9000e+00, 1.2000e+00],
        [8.4000e+01, 6.0000e+00, 2.7000e+00, 5.1000e+00, 1.6000e+00],
        [8.5000e+01, 5.4000e+00, 3.0000e+00, 4.5000e+00, 1.5000e+00],
        [8.6000e+01, 6.0000e+00, 3.4000e+00, 4.5000e+00, 1.6000e+00],
        [8.7000e+01, 6.7000e+00, 3.1000e+00, 4.7000e+00, 1.5000e+00],
        [8.8000e+01, 6.3000e+00, 2.3000e+00, 4.4000e+00, 1.3000e+00],
        [8.9000e+01, 5.6000e+00, 3.0000e+00, 4.1000e+00, 1.3000e+00],
        [9.0000e+01, 5.5000e+00, 2.5000e+00, 4.0000e+00, 1.3000e+00],
        [9.1000e+01, 5.5000e+00, 2.6000e+00, 4.4000e+00, 1.2000e+00],
        [9.2000e+01, 6.1000e+00, 3.0000e+00, 4.6000e+00, 1.4000e+00],
        [9.3000e+01, 5.8000e+00, 2.6000e+00, 4.0000e+00, 1.2000e+00],
        [9.4000e+01, 5.0000e+00, 2.3000e+00, 3.3000e+00, 1.0000e+00],
        [9.5000e+01, 5.6000e+00, 2.7000e+00, 4.2000e+00, 1.3000e+00],
        [9.6000e+01, 5.7000e+00, 3.0000e+00, 4.2000e+00, 1.2000e+00],
        [9.7000e+01, 5.7000e+00, 2.9000e+00, 4.2000e+00, 1.3000e+00],
        [9.8000e+01, 6.2000e+00, 2.9000e+00, 4.3000e+00, 1.3000e+00],
        [9.9000e+01, 5.1000e+00, 2.5000e+00, 3.0000e+00, 1.1000e+00],
        [1.0000e+02, 5.7000e+00, 2.8000e+00, 4.1000e+00, 1.3000e+00],
        [1.0100e+02, 6.3000e+00, 3.3000e+00, 6.0000e+00, 2.5000e+00],
        [1.0200e+02, 5.8000e+00, 2.7000e+00, 5.1000e+00, 1.9000e+00],
        [1.0300e+02, 7.1000e+00, 3.0000e+00, 5.9000e+00, 2.1000e+00],
        [1.0400e+02, 6.3000e+00, 2.9000e+00, 5.6000e+00, 1.8000e+00],
        [1.0500e+02, 6.5000e+00, 3.0000e+00, 5.8000e+00, 2.2000e+00],
        [1.0600e+02, 7.6000e+00, 3.0000e+00, 6.6000e+00, 2.1000e+00],
        [1.0700e+02, 4.9000e+00, 2.5000e+00, 4.5000e+00, 1.7000e+00],
        [1.0800e+02, 7.3000e+00, 2.9000e+00, 6.3000e+00, 1.8000e+00],
        [1.0900e+02, 6.7000e+00, 2.5000e+00, 5.8000e+00, 1.8000e+00],
        [1.1000e+02, 7.2000e+00, 3.6000e+00, 6.1000e+00, 2.5000e+00],
        [1.1100e+02, 6.5000e+00, 3.2000e+00, 5.1000e+00, 2.0000e+00],
        [1.1200e+02, 6.4000e+00, 2.7000e+00, 5.3000e+00, 1.9000e+00],
        [1.1300e+02, 6.8000e+00, 3.0000e+00, 5.5000e+00, 2.1000e+00],
        [1.1400e+02, 5.7000e+00, 2.5000e+00, 5.0000e+00, 2.0000e+00],
        [1.1500e+02, 5.8000e+00, 2.8000e+00, 5.1000e+00, 2.4000e+00],
        [1.1600e+02, 6.4000e+00, 3.2000e+00, 5.3000e+00, 2.3000e+00],
        [1.1700e+02, 6.5000e+00, 3.0000e+00, 5.5000e+00, 1.8000e+00],
        [1.1800e+02, 7.7000e+00, 3.8000e+00, 6.7000e+00, 2.2000e+00],
        [1.1900e+02, 7.7000e+00, 2.6000e+00, 6.9000e+00, 2.3000e+00],
        [1.2000e+02, 6.0000e+00, 2.2000e+00, 5.0000e+00, 1.5000e+00],
        [1.2100e+02, 6.9000e+00, 3.2000e+00, 5.7000e+00, 2.3000e+00],
        [1.2200e+02, 5.6000e+00, 2.8000e+00, 4.9000e+00, 2.0000e+00],
        [1.2300e+02, 7.7000e+00, 2.8000e+00, 6.7000e+00, 2.0000e+00],
        [1.2400e+02, 6.3000e+00, 2.7000e+00, 4.9000e+00, 1.8000e+00],
        [1.2500e+02, 6.7000e+00, 3.3000e+00, 5.7000e+00, 2.1000e+00],
        [1.2600e+02, 7.2000e+00, 3.2000e+00, 6.0000e+00, 1.8000e+00],
        [1.2700e+02, 6.2000e+00, 2.8000e+00, 4.8000e+00, 1.8000e+00],
        [1.2800e+02, 6.1000e+00, 3.0000e+00, 4.9000e+00, 1.8000e+00],
        [1.2900e+02, 6.4000e+00, 2.8000e+00, 5.6000e+00, 2.1000e+00],
        [1.3000e+02, 7.2000e+00, 3.0000e+00, 5.8000e+00, 1.6000e+00],
        [1.3100e+02, 7.4000e+00, 2.8000e+00, 6.1000e+00, 1.9000e+00],
        [1.3200e+02, 7.9000e+00, 3.8000e+00, 6.4000e+00, 2.0000e+00],
        [1.3300e+02, 6.4000e+00, 2.8000e+00, 5.6000e+00, 2.2000e+00],
        [1.3400e+02, 6.3000e+00, 2.8000e+00, 5.1000e+00, 1.5000e+00],
        [1.3500e+02, 6.1000e+00, 2.6000e+00, 5.6000e+00, 1.4000e+00],
        [1.3600e+02, 7.7000e+00, 3.0000e+00, 6.1000e+00, 2.3000e+00],
        [1.3700e+02, 6.3000e+00, 3.4000e+00, 5.6000e+00, 2.4000e+00],
        [1.3800e+02, 6.4000e+00, 3.1000e+00, 5.5000e+00, 1.8000e+00],
        [1.3900e+02, 6.0000e+00, 3.0000e+00, 4.8000e+00, 1.8000e+00],
        [1.4000e+02, 6.9000e+00, 3.1000e+00, 5.4000e+00, 2.1000e+00],
        [1.4100e+02, 6.7000e+00, 3.1000e+00, 5.6000e+00, 2.4000e+00],
        [1.4200e+02, 6.9000e+00, 3.1000e+00, 5.1000e+00, 2.3000e+00],
        [1.4300e+02, 5.8000e+00, 2.7000e+00, 5.1000e+00, 1.9000e+00],
        [1.4400e+02, 6.8000e+00, 3.2000e+00, 5.9000e+00, 2.3000e+00],
        [1.4500e+02, 6.7000e+00, 3.3000e+00, 5.7000e+00, 2.5000e+00],
        [1.4600e+02, 6.7000e+00, 3.0000e+00, 5.2000e+00, 2.3000e+00],
        [1.4700e+02, 6.3000e+00, 2.5000e+00, 5.0000e+00, 1.9000e+00],
        [1.4800e+02, 6.5000e+00, 3.0000e+00, 5.2000e+00, 2.0000e+00],
        [1.4900e+02, 6.2000e+00, 3.4000e+00, 5.4000e+00, 2.3000e+00],
        [1.5000e+02, 5.9000e+00, 3.0000e+00, 5.1000e+00, 1.8000e+00]],
       dtype=torch.float64) tensor([[1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0]], dtype=torch.uint8)
tensor([[3., 1., 0.],
        [2., 0., 1.],
        [4., 0., 1.],
        [3., 0., 1.]], dtype=torch.float64) tensor([127500, 106000, 178100, 140000])
tensor([[6.3200e-03, 1.8000e+01, 2.3100e+00,  ..., 2.9600e+02, 1.5300e+01,
         4.9800e+00],
        [2.7310e-02, 0.0000e+00, 7.0700e+00,  ..., 2.4200e+02, 1.7800e+01,
         9.1400e+00],
        [2.7290e-02, 0.0000e+00, 7.0700e+00,  ..., 2.4200e+02, 1.7800e+01,
         4.0300e+00],
        ...,
        [6.0760e-02, 0.0000e+00, 1.1930e+01,  ..., 2.7300e+02, 2.1000e+01,
         5.6400e+00],
        [1.0959e-01, 0.0000e+00, 1.1930e+01,  ..., 2.7300e+02, 2.1000e+01,
         6.4800e+00],
        [4.7410e-02, 0.0000e+00, 1.1930e+01,  ..., 2.7300e+02, 2.1000e+01,
         7.8800e+00]], dtype=torch.float64) tensor([24.0000, 21.6000, 34.7000, 33.4000, 36.2000, 28.7000, 22.9000, 27.1000,
        16.5000, 18.9000, 15.0000, 18.9000, 21.7000, 20.4000, 18.2000, 19.9000,
        23.1000, 17.5000, 20.2000, 18.2000, 13.6000, 19.6000, 15.2000, 14.5000,
        15.6000, 13.9000, 16.6000, 14.8000, 18.4000, 21.0000, 12.7000, 14.5000,
        13.2000, 13.1000, 13.5000, 18.9000, 20.0000, 21.0000, 24.7000, 30.8000,
        34.9000, 26.6000, 25.3000, 24.7000, 21.2000, 19.3000, 20.0000, 16.6000,
        14.4000, 19.4000, 19.7000, 20.5000, 25.0000, 23.4000, 18.9000, 35.4000,
        24.7000, 31.6000, 23.3000, 19.6000, 18.7000, 16.0000, 22.2000, 25.0000,
        33.0000, 23.5000, 19.4000, 22.0000, 17.4000, 20.9000, 24.2000, 21.7000,
        22.8000, 23.4000, 24.1000, 21.4000, 20.0000, 20.8000, 21.2000, 20.3000,
        28.0000, 23.9000, 24.8000, 22.9000, 23.9000, 26.6000, 22.5000, 22.2000,
        23.6000, 28.7000, 22.6000, 22.0000, 22.9000, 25.0000, 20.6000, 28.4000,
        21.4000, 38.7000, 43.8000, 33.2000, 27.5000, 26.5000, 18.6000, 19.3000,
        20.1000, 19.5000, 19.5000, 20.4000, 19.8000, 19.4000, 21.7000, 22.8000,
        18.8000, 18.7000, 18.5000, 18.3000, 21.2000, 19.2000, 20.4000, 19.3000,
        22.0000, 20.3000, 20.5000, 17.3000, 18.8000, 21.4000, 15.7000, 16.2000,
        18.0000, 14.3000, 19.2000, 19.6000, 23.0000, 18.4000, 15.6000, 18.1000,
        17.4000, 17.1000, 13.3000, 17.8000, 14.0000, 14.4000, 13.4000, 15.6000,
        11.8000, 13.8000, 15.6000, 14.6000, 17.8000, 15.4000, 21.5000, 19.6000,
        15.3000, 19.4000, 17.0000, 15.6000, 13.1000, 41.3000, 24.3000, 23.3000,
        27.0000, 50.0000, 50.0000, 50.0000, 22.7000, 25.0000, 50.0000, 23.8000,
        23.8000, 22.3000, 17.4000, 19.1000, 23.1000, 23.6000, 22.6000, 29.4000,
        23.2000, 24.6000, 29.9000, 37.2000, 39.8000, 36.2000, 37.9000, 32.5000,
        26.4000, 29.6000, 50.0000, 32.0000, 29.8000, 34.9000, 37.0000, 30.5000,
        36.4000, 31.1000, 29.1000, 50.0000, 33.3000, 30.3000, 34.6000, 34.9000,
        32.9000, 24.1000, 42.3000, 48.5000, 50.0000, 22.6000, 24.4000, 22.5000,
        24.4000, 20.0000, 21.7000, 19.3000, 22.4000, 28.1000, 23.7000, 25.0000,
        23.3000, 28.7000, 21.5000, 23.0000, 26.7000, 21.7000, 27.5000, 30.1000,
        44.8000, 50.0000, 37.6000, 31.6000, 46.7000, 31.5000, 24.3000, 31.7000,
        41.7000, 48.3000, 29.0000, 24.0000, 25.1000, 31.5000, 23.7000, 23.3000,
        22.0000, 20.1000, 22.2000, 23.7000, 17.6000, 18.5000, 24.3000, 20.5000,
        24.5000, 26.2000, 24.4000, 24.8000, 29.6000, 42.8000, 21.9000, 20.9000,
        44.0000, 50.0000, 36.0000, 30.1000, 33.8000, 43.1000, 48.8000, 31.0000,
        36.5000, 22.8000, 30.7000, 50.0000, 43.5000, 20.7000, 21.1000, 25.2000,
        24.4000, 35.2000, 32.4000, 32.0000, 33.2000, 33.1000, 29.1000, 35.1000,
        45.4000, 35.4000, 46.0000, 50.0000, 32.2000, 22.0000, 20.1000, 23.2000,
        22.3000, 24.8000, 28.5000, 37.3000, 27.9000, 23.9000, 21.7000, 28.6000,
        27.1000, 20.3000, 22.5000, 29.0000, 24.8000, 22.0000, 26.4000, 33.1000,
        36.1000, 28.4000, 33.4000, 28.2000, 22.8000, 20.3000, 16.1000, 22.1000,
        19.4000, 21.6000, 23.8000, 16.2000, 17.8000, 19.8000, 23.1000, 21.0000,
        23.8000, 23.1000, 20.4000, 18.5000, 25.0000, 24.6000, 23.0000, 22.2000,
        19.3000, 22.6000, 19.8000, 17.1000, 19.4000, 22.2000, 20.7000, 21.1000,
        19.5000, 18.5000, 20.6000, 19.0000, 18.7000, 32.7000, 16.5000, 23.9000,
        31.2000, 17.5000, 17.2000, 23.1000, 24.5000, 26.6000, 22.9000, 24.1000,
        18.6000, 30.1000, 18.2000, 20.6000, 17.8000, 21.7000, 22.7000, 22.6000,
        25.0000, 19.9000, 20.8000, 16.8000, 21.9000, 27.5000, 21.9000, 23.1000,
        50.0000, 50.0000, 50.0000, 50.0000, 50.0000, 13.8000, 13.8000, 15.0000,
        13.9000, 13.3000, 13.1000, 10.2000, 10.4000, 10.9000, 11.3000, 12.3000,
         8.8000,  7.2000, 10.5000,  7.4000, 10.2000, 11.5000, 15.1000, 23.2000,
         9.7000, 13.8000, 12.7000, 13.1000, 12.5000,  8.5000,  5.0000,  6.3000,
         5.6000,  7.2000, 12.1000,  8.3000,  8.5000,  5.0000, 11.9000, 27.9000,
        17.2000, 27.5000, 15.0000, 17.2000, 17.9000, 16.3000,  7.0000,  7.2000,
         7.5000, 10.4000,  8.8000,  8.4000, 16.7000, 14.2000, 20.8000, 13.4000,
        11.7000,  8.3000, 10.2000, 10.9000, 11.0000,  9.5000, 14.5000, 14.1000,
        16.1000, 14.3000, 11.7000, 13.4000,  9.6000,  8.7000,  8.4000, 12.8000,
        10.5000, 17.1000, 18.4000, 15.4000, 10.8000, 11.8000, 14.9000, 12.6000,
        14.1000, 13.0000, 13.4000, 15.2000, 16.1000, 17.8000, 14.9000, 14.1000,
        12.7000, 13.5000, 14.9000, 20.0000, 16.4000, 17.7000, 19.5000, 20.2000,
        21.4000, 19.9000, 19.0000, 19.1000, 19.1000, 20.1000, 19.9000, 19.6000,
        23.2000, 29.8000, 13.8000, 13.3000, 16.7000, 12.0000, 14.6000, 21.4000,
        23.0000, 23.7000, 25.0000, 21.8000, 20.6000, 21.2000, 19.1000, 20.6000,
        15.2000,  7.0000,  8.1000, 13.6000, 20.1000, 21.8000, 24.5000, 23.1000,
        19.7000, 18.3000, 21.2000, 17.5000, 16.8000, 22.4000, 20.6000, 23.9000,
        22.0000, 11.9000], dtype=torch.float64)

Process finished with exit code 0

'''

心得体会:这次的难度比上次略微有提高。

第一部分:回顾了一下张量和算子的概念,以及张量和numpy之间的区别和优缺点。

第二部分:回顾了一下基本的tensor处理数据的函数。函数太多,比较麻烦,不过天上没有白掉的馅饼,也算加深了印象。

第三部分: 是一个崭新的部分,之前机器学习老师给的是已经处理好的数据集,没有进行数据预处理这方面,这部分也算了解了一些,处理缺失值有两种办法,一种是插值,一种是删除,插值的化可以用均值插值,也可以用中位数进行插值。删除直接删除其他元素就好了,对于一些语义,不是用数字进行表示的,例如玫瑰花、西兰花,可以转换为数据种类长度的的维度的变量,然后用[1,0]这种表示,例如[1,0]表示的是玫瑰花。[0,1]表示的是西兰花。

在进行张量转换的时候,直接使用读出来的csv文件会报错,需要用numpy进行转换,在转换为tensor变量,numpy相当于一个不收钱的中间商。

传送门:河大最牛老师

pytorch和numpy版本关系 pytorch和numpy区别_pytorch_03