动手学深度学习总结第一章

N维数组样例

动手学深度学习总结第一章_第1张图片

动手学深度学习总结第一章_第2张图片

 大小为1的张量

# 将大小为1的张量转化为Python标量
c = torch.tensor([3.13])
print(c, c.item(), float(c), int(c))

 注:c.item返回的是数值,而非Tensor类型

连接操作

 

# dim=0,纵向连接,dim=1,横向连接
m = torch.cat((z, y), dim=0)
n = torch.cat((y, z), dim=1)
print(m, '\n', n)

# 根据逻辑运算符判断二维张量
print(y == z)

 张量的广播机

# 广播机制,易出错,首先必须维度相同,会通过复制将行或列扩展到较长的那一方
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
print(a+b)

 注:在上面的部分中,我们看到了如何在相同形状的两个张量上执行按元素操作。 在某些情况下,即使形状不同,我们仍然可以通过调用 广播机制(broadcasting mechanism)来执行按元素操作。 这种机制的工作方式如下:首先,通过适当复制元素来扩展一个或两个数组, 以便在转换之后,两个张量具有相同的形状。 其次,对生成的数组执行按元素操作。

数据预处理

创建csv文件

os.makedirs(os.path.join('..', 'data'), exist_ok=True)      # 创建一个这样的目录
data_file = os.path.join('..', 'data', 'house_tiny.csv')    # 创建一个该名称的csv文件
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price \n')   # 列名
    f.write('NA,Pave,127500\n')     # 每行表示一个数据样本
    f.write('2,NAN,106000\n')
    f.write('4, NAN, 178100\n')
    f.write('NA,NAN,140000\n')

数据预处理

# 读取生成的文件,并打印在屏幕上
data = pd.read_csv(data_file)
print(data)

# 处理缺失的数据,典型方法包括插值和删除,此处考虑插值,iloc = index_location
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())   # 对缺失的数据用平均值插值处理,fill na:是对值维NA的值进行填充
print(inputs)

# 对于inputs中的类别值或离散值,我们将'NAN'是为一个类别,对所有出现的不同种类的类别值变成0或1,1:即该元素和列名元素相同,0:反之
inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)

x, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
print(x, y)

你可能感兴趣的:(python,深度学习)