机器学习 | 实战(二)Fashion-MNIST

神经网络使用小批量随机梯度下降进行迭代的流程:

(1)设置步长lr,动量值gamma,迭代次数epochs,batch_size等信息,(如果需要)设置初始权重w0
(2)导入数据,将数据切分成batches
(3)定义神经网络架构
(4)定义损失函数L(w),如果需要的话,将损失函数调整成凸函数,以便求解最小值
(5)定义所使用的的优化算法
(6)开始在epoches(外层)和batch(内层)上循环,执行优化算法:
6.1)调整数据结构,确定数据能够在神经网络、损失函数和优化算法中顺利进行
6.2)完成向前传播,计算初始损失
6.3)利用反向传播,在损失函数L(w)上对每一个w求偏导数
6.4)迭代当前权重
6.5)清空本轮梯度
6.2、6.3、6.4、6.5是梯度下降过程
6.6)完成模型进度与效果监控 #loss、准确率accuracy #大趋势是从大到小,要监督这个大趋势
(7)输出结果
用来处理数据的类

.

TensorDataset:将特征与标签合并到同一个对象中
DataLoader:帮助进行小批量的分割

在Fashion-MINST(pytorch自带的模块)上实现神经网络的学习流程

for epochs in range(epoch):#每一个epoch下面进行batch循环
for batch in #DataLoader生成的对象

#认识Fashion-MINST数据集
import torchvision
import torchvision.transforms as transforms #处理数据模块
#dataLoader、TensorDataset - 对数据的结构、归纳方式进行变换(对数据拆拆拼拼,不会改变数据本来的样子)
#torchvision、transforms - 对数据集的数字本身进行修改
mnist = torchvision.datasets.FashionMNIST(root = "D:\pythonhomework\FashionMnist" #输入计算机上数据集所在的目录的地址
                                          ,download = True #True/False.  
                                                        #如果在目录中找到数据集了,代码运行就会无视download参数,
                                                        #没有找到数据集,就会看download是True还是False,
                                                           #如果是True,就会往root所写的目录中下载数据集;
                                                           #如果是False,就会报错。但是这种方法下载一般比较慢
                                          ,train = True #如果是用于训练,就填True,就会下载一个大一点的数据集
                                                         #如果不是用于训练,就填False,就会下载一个小一点的数据集
                                          ,transform = transforms.ToTensor() #有时下载下来的数据并不能用于神经网络,需要对数据进行统一的处理

)#实例化数据
mnist #输出对于mnist数据的说明

Dataset FashionMNIST
Number of datapoints: 60000
Root location: D:\pythonhomework\FashionMnist
Split: Train
StandardTransform
Transform: ToTensor()

len(mnist) #输出样本个数

60000

#mnist.data #得到特征张量的长相
mnist.data.shape #特征张量

torch.Size([60000, 28, 28])

#(sample_size - 样本索引,H - height,W - width,C - color颜色通道)
#从上一条输出可以看出,共有60000个样本,高和宽都是28,没有颜色通道这一项
#[60000,28,28,1]
mnist.targets.unique()#查看数据共有多少个类别

tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

mnist.classes#具体类型

[‘T-shirt/top’,
‘Trouser’,
‘Pullover’,
‘Dress’,
‘Coat’,
‘Sandal’,
‘Shirt’,
‘Sneaker’,
‘Bag’,
‘Ankle boot’]

import matplotlib.pyplot as plt
import numpy#因为plt不接受tensor,所以需要导入numpy
mnist[0]

(tensor([[[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.0000, 0.0000, 0.0510,
0.2863, 0.0000, 0.0000, 0.0039, 0.0157, 0.0000, 0.0000, 0.0000,
0.0000, 0.0039, 0.0039, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0118, 0.0000, 0.1412, 0.5333,
0.4980, 0.2431, 0.2118, 0.0000, 0.0000, 0.0000, 0.0039, 0.0118,
0.0157, 0.0000, 0.0000, 0.0118],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0235, 0.0000, 0.4000, 0.8000,
0.6902, 0.5255, 0.5647, 0.4824, 0.0902, 0.0000, 0.0000, 0.0000,
0.0000, 0.0471, 0.0392, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.6078, 0.9255,
0.8118, 0.6980, 0.4196, 0.6118, 0.6314, 0.4275, 0.2510, 0.0902,
0.3020, 0.5098, 0.2824, 0.0588],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0039, 0.0000, 0.2706, 0.8118, 0.8745,
0.8549, 0.8471, 0.8471, 0.6392, 0.4980, 0.4745, 0.4784, 0.5725,
0.5529, 0.3451, 0.6745, 0.2588],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0039, 0.0039, 0.0039, 0.0000, 0.7843, 0.9098, 0.9098,
0.9137, 0.8980, 0.8745, 0.8745, 0.8431, 0.8353, 0.6431, 0.4980,
0.4824, 0.7686, 0.8980, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.7176, 0.8824, 0.8471,
0.8745, 0.8941, 0.9216, 0.8902, 0.8784, 0.8706, 0.8784, 0.8667,
0.8745, 0.9608, 0.6784, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.7569, 0.8941, 0.8549,
0.8353, 0.7765, 0.7059, 0.8314, 0.8235, 0.8275, 0.8353, 0.8745,
0.8627, 0.9529, 0.7922, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0039, 0.0118, 0.0000, 0.0471, 0.8588, 0.8627, 0.8314,
0.8549, 0.7529, 0.6627, 0.8902, 0.8157, 0.8549, 0.8784, 0.8314,
0.8863, 0.7725, 0.8196, 0.2039],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0235, 0.0000, 0.3882, 0.9569, 0.8706, 0.8627,
0.8549, 0.7961, 0.7765, 0.8667, 0.8431, 0.8353, 0.8706, 0.8627,
0.9608, 0.4667, 0.6549, 0.2196],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0157, 0.0000, 0.0000, 0.2157, 0.9255, 0.8941, 0.9020,
0.8941, 0.9412, 0.9098, 0.8353, 0.8549, 0.8745, 0.9176, 0.8510,
0.8510, 0.8196, 0.3608, 0.0000],
[0.0000, 0.0000, 0.0039, 0.0157, 0.0235, 0.0275, 0.0078, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.9294, 0.8863, 0.8510, 0.8745,
0.8706, 0.8588, 0.8706, 0.8667, 0.8471, 0.8745, 0.8980, 0.8431,
0.8549, 1.0000, 0.3020, 0.0000],
[0.0000, 0.0118, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.2431, 0.5686, 0.8000, 0.8941, 0.8118, 0.8353, 0.8667,
0.8549, 0.8157, 0.8275, 0.8549, 0.8784, 0.8745, 0.8588, 0.8431,
0.8784, 0.9569, 0.6235, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0706, 0.1725, 0.3216, 0.4196,
0.7412, 0.8941, 0.8627, 0.8706, 0.8510, 0.8863, 0.7843, 0.8039,
0.8275, 0.9020, 0.8784, 0.9176, 0.6902, 0.7373, 0.9804, 0.9725,
0.9137, 0.9333, 0.8431, 0.0000],
[0.0000, 0.2235, 0.7333, 0.8157, 0.8784, 0.8667, 0.8784, 0.8157,
0.8000, 0.8392, 0.8157, 0.8196, 0.7843, 0.6235, 0.9608, 0.7569,
0.8078, 0.8745, 1.0000, 1.0000, 0.8667, 0.9176, 0.8667, 0.8275,
0.8627, 0.9098, 0.9647, 0.0000],
[0.0118, 0.7922, 0.8941, 0.8784, 0.8667, 0.8275, 0.8275, 0.8392,
0.8039, 0.8039, 0.8039, 0.8627, 0.9412, 0.3137, 0.5882, 1.0000,
0.8980, 0.8667, 0.7373, 0.6039, 0.7490, 0.8235, 0.8000, 0.8196,
0.8706, 0.8941, 0.8824, 0.0000],
[0.3843, 0.9137, 0.7765, 0.8235, 0.8706, 0.8980, 0.8980, 0.9176,
0.9765, 0.8627, 0.7608, 0.8431, 0.8510, 0.9451, 0.2549, 0.2863,
0.4157, 0.4588, 0.6588, 0.8588, 0.8667, 0.8431, 0.8510, 0.8745,
0.8745, 0.8784, 0.8980, 0.1137],
[0.2941, 0.8000, 0.8314, 0.8000, 0.7569, 0.8039, 0.8275, 0.8824,
0.8471, 0.7255, 0.7725, 0.8078, 0.7765, 0.8353, 0.9412, 0.7647,
0.8902, 0.9608, 0.9373, 0.8745, 0.8549, 0.8314, 0.8196, 0.8706,
0.8627, 0.8667, 0.9020, 0.2627],
[0.1882, 0.7961, 0.7176, 0.7608, 0.8353, 0.7725, 0.7255, 0.7451,
0.7608, 0.7529, 0.7922, 0.8392, 0.8588, 0.8667, 0.8627, 0.9255,
0.8824, 0.8471, 0.7804, 0.8078, 0.7294, 0.7098, 0.6941, 0.6745,
0.7098, 0.8039, 0.8078, 0.4510],
[0.0000, 0.4784, 0.8588, 0.7569, 0.7020, 0.6706, 0.7176, 0.7686,
0.8000, 0.8235, 0.8353, 0.8118, 0.8275, 0.8235, 0.7843, 0.7686,
0.7608, 0.7490, 0.7647, 0.7490, 0.7765, 0.7529, 0.6902, 0.6118,
0.6549, 0.6941, 0.8235, 0.3608],
[0.0000, 0.0000, 0.2902, 0.7412, 0.8314, 0.7490, 0.6863, 0.6745,
0.6863, 0.7098, 0.7255, 0.7373, 0.7412, 0.7373, 0.7569, 0.7765,
0.8000, 0.8196, 0.8235, 0.8235, 0.8275, 0.7373, 0.7373, 0.7608,
0.7529, 0.8471, 0.6667, 0.0000],
[0.0078, 0.0000, 0.0000, 0.0000, 0.2588, 0.7843, 0.8706, 0.9294,
0.9373, 0.9490, 0.9647, 0.9529, 0.9569, 0.8667, 0.8627, 0.7569,
0.7490, 0.7020, 0.7137, 0.7137, 0.7098, 0.6902, 0.6510, 0.6588,
0.3882, 0.2275, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1569,
0.2392, 0.1725, 0.2824, 0.1608, 0.1373, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000]]]),
9)

#mnist[0]       #mnist数据集每个样本包含两个对象,第一个是特征张量tensor,第二个是特征张量对应的标签
#mnist[0][0]    #所以如果想取特征,应该再进一步索引,只取出tensor
plt.imshow(mnist[0][0].view(28,28).numpy()) #imshow是imageshow的简写
#把张量放入imshow,并将之变为长和宽的结构,再将之变为numpy。就会输出[0][0]对应的图像

<matplotlib.image.AxesImage at 0x29dd4e0e7c0>

在这里插入图片描述

plt.imshow(mnist[30005][0].view(28,28).numpy())  #只需用改变索引(0~60000),就可以输出不同的图像

<matplotlib.image.AxesImage at 0x29dd4eead90>

在这里插入图片描述

#TensorDataset 不需要。因为数据集本来就是打包好的:张量,索引
#小批量划分

1、导入库
import torch
from torch import nn
from torch import optim
from torch.nn import functional as F
from torch.utils.data import DataLoader,TensorDataset
import torchvision
import torchvision.transforms as transforms
2、确定数据、确定超参数
lr = 0.15
gamma = 0
epochs = 10
bs = 128 #batch_size,128是使用图像数据时经常设置的一个数字
mnist = torchvision.datasets.FashionMNIST(root = "D:\pythonhomework\FashionMnist" #输入计算机上数据集所在的目录的地址
                                          ,download = True #True/False.  
                                                        #如果在目录中找到数据集了,代码运行就会无视download参数,
                                                        #没有找到数据集,就会看download是True还是False,
                                                           #如果是True,就会往root所写的目录中下载数据集;
                                                           #如果是False,就会报错。但是这种方法下载一般比较慢
                                          ,train = True #如果是用于训练,就填True,就会下载一个大一点的数据集
                                                         #如果不是用于训练,就填False,就会下载一个小一点的数据集
                                          ,transform = transforms.ToTensor() #有时下载下来的数据并不能用于神经网络,需要对数据进行统一的处理

)
#放入进行迭代的数据结构是什么样的?看一下批量划分之后x,y分别是什么
batchdata = DataLoader(mnist
                       ,batch_size = bs
                       ,shuffle = True #打乱顺序
                      )
for x,y,in batchdata:
    print(x.shape)
    print(y.shape)
    break

torch.Size([128, 1, 28, 28])
torch.Size([128])

#输入层上神经元的个数:x是4维的数据,把x变成以128为第一维,后三维数据乘积为第二维的形状(128,1*28*28)
#输出层上神经元的个数
input_ = mnist.data[0].numel()#这个张量中的元素个数,其实就是28*28
output_ = len(mnist.targets.unique())
output_  #十分类

10

3、定义神经网络架构
class Model(nn.Module):
    def __init__(self,in_features = 10,out_features = 2):  #第一个参数固定为self;输入层和输出层上神经元的个数(10和2是自己定义的)
        super().__init__()#super继承
        self.linear1 = nn.Linear(in_features,128,bias = False)#上层神经元的个数,下层神经元的个数(128是自己定义的),偏差。线性层
        #只要一个隐藏层
        self.output = nn.Linear(128,out_features,bias = False)#上层神经元的个数,下层神经元的个数,偏差。输出层
        
    def forward(self,x):
        x = x.view(-1,28*28)#view(-1,)中第一维-1作为占位符,表示请pytorch帮助自动计算-1这个位置应该是什么;第二维表示特征
        sigma1 = torch.relu(self.linear1(x))#线性层的输出作为激活函数relu的输入
        sigma2 = F.log_softmax(self.output(sigma1),dim = 1)#
        return sigma2
4、定义损失函数、优化算法、梯度下降的流程:定义一个训练函数
def fit(net,batchdata,lr = 0.01,epochs = 5,gamma = 0): #fit或者train.放入超参数
    criterion = nn.NLLLoss()
    opt = optim.SGD(net.parameters(),lr = lr,momentum = gamma)
    
    samples = 0#循环开始之前,模型一个样本有没有见过。每进行一次循环,模型就会见批量里的全部数据
    correct = 0#循环开始之前,预测正确的值为0
    for epoch in range(epochs):#希望全数据被训练几次
        for batch_idx,(x,y) in enumerate(batchdata): #每个epoch下有多个batch,enumerate对元素进行标号,可以知道执行到了第几个batch
            y = y.view(x.shape[0])#降维。多分类的损失函数只接受一维y
            sigma = net.forward(x)#正向传播
            loss = criterion(sigma,y)
            loss.backward()
            opt.step()#对权重进行更新
            opt.zero_grad()#清零
            
            #求解准确率,全部判断正确的样本数量/已经看过的总样本量
            yhat = torch.max(sigma,1)[1]#torch.max函数中索引为1的部分
            correct += torch.sum(yhat == y) #统计yhat与y相不相等,如果相等返回True,如果不相等返回False。对布尔值进行加和。
            samples += x.shape[0]#每训练一个batch(批量)的数据,模型见过的样本数据就会增加x.shape(x里含有的数据量)
                
            #希望打印的列表不要太长,所以希望选择性打印
            if(batch_idx + 1) % 125 == 0 or batch_idx == len(batchdata)-1:  #每n个batch打印一次
                #每次epoch结束时打印一次。因为batch_idx是从0开始的,所以需要len-1
                print("Epoch{}:[{}/{}({:.0f}%)],Loss:{:.6f},Accuracy:{:.3f}".format(epoch+1
                      #打印一下已经看过的数据占总数据的百分之多少.分子代表:已经查看过的数据有多少;
                      #分母代表:在现有的epoch数据下模型一共需要查看多少数据
                      #因为mnist有60000个样本,当epochs=5时,就需要看30万个数据
                      #.0表示显示一位小数,f表示floa。%是字符串里面的%,没有任何实际作用                                                            
                                                        ,samples#模型见过的数据
                                                        ,epochs*len(batchdata.dataset)#epoch*数据集中的样本量
                                                        ,samples/(epochs*len(batchdata.dataset))*100 #因为之前转化成百分号了
                                                        ,loss.data.item()
                                                        ,float(100*correct/samples))
                      )
#举个例子,了解一下enumerate的应用
list = ["A","B","C"]
for x in enumerate(list):
    print(x)
#举个例子,了解一下format的用法
print("你好,这里是{}".format("BeiJing"))

(0, ‘A’)
(1, ‘B’)
(2, ‘C’)
你好,这里是BeiJing

5、训练与评估
torch.manual_seed(1412)
net = Model(in_features = input_,out_features = output_)#实例化
fit(net,batchdata,lr=lr,epochs=epochs,gamma=gamma)

Epoch1:[16000/600000(3%)],Loss:0.695951,Accuracy:64.787
Epoch1:[32000/600000(5%)],Loss:0.545337,Accuracy:70.409
Epoch1:[48000/600000(8%)],Loss:0.604788,Accuracy:73.671
Epoch1:[60000/600000(10%)],Loss:0.375523,Accuracy:75.147
Epoch2:[76000/600000(13%)],Loss:0.482869,Accuracy:76.634
Epoch2:[92000/600000(15%)],Loss:0.526897,Accuracy:77.708
Epoch2:[108000/600000(18%)],Loss:0.513335,Accuracy:78.593
Epoch2:[120000/600000(20%)],Loss:0.389520,Accuracy:79.152
Epoch3:[136000/600000(23%)],Loss:0.244438,Accuracy:79.807
Epoch3:[152000/600000(25%)],Loss:0.305677,Accuracy:80.336
Epoch3:[168000/600000(28%)],Loss:0.313937,Accuracy:80.782
Epoch3:[180000/600000(30%)],Loss:0.277517,Accuracy:81.095
Epoch4:[196000/600000(33%)],Loss:0.351672,Accuracy:81.441
Epoch4:[212000/600000(35%)],Loss:0.447697,Accuracy:81.762
Epoch4:[228000/600000(38%)],Loss:0.482056,Accuracy:82.119
Epoch4:[240000/600000(40%)],Loss:0.358851,Accuracy:82.313
Epoch5:[256000/600000(43%)],Loss:0.287667,Accuracy:82.627
Epoch5:[272000/600000(45%)],Loss:0.450172,Accuracy:82.880
Epoch5:[288000/600000(48%)],Loss:0.340711,Accuracy:83.076
Epoch5:[300000/600000(50%)],Loss:0.417661,Accuracy:83.226
Epoch6:[316000/600000(53%)],Loss:0.477798,Accuracy:83.428
Epoch6:[332000/600000(55%)],Loss:0.338003,Accuracy:83.606
Epoch6:[348000/600000(58%)],Loss:0.175343,Accuracy:83.793
Epoch6:[360000/600000(60%)],Loss:0.426517,Accuracy:83.885
Epoch7:[376000/600000(63%)],Loss:0.292095,Accuracy:84.049
Epoch7:[392000/600000(65%)],Loss:0.468990,Accuracy:84.182
Epoch7:[408000/600000(68%)],Loss:0.361683,Accuracy:84.340
Epoch7:[420000/600000(70%)],Loss:0.221409,Accuracy:84.436
Epoch8:[436000/600000(73%)],Loss:0.298884,Accuracy:84.560
Epoch8:[452000/600000(75%)],Loss:0.341254,Accuracy:84.691
Epoch8:[468000/600000(78%)],Loss:0.227314,Accuracy:84.822
Epoch8:[480000/600000(80%)],Loss:0.236043,Accuracy:84.897
Epoch9:[496000/600000(83%)],Loss:0.345116,Accuracy:85.002
Epoch9:[512000/600000(85%)],Loss:0.335630,Accuracy:85.111
Epoch9:[528000/600000(88%)],Loss:0.339184,Accuracy:85.208
Epoch9:[540000/600000(90%)],Loss:0.337345,Accuracy:85.284
Epoch10:[556000/600000(93%)],Loss:0.318106,Accuracy:85.386
Epoch10:[572000/600000(95%)],Loss:0.220138,Accuracy:85.478
Epoch10:[588000/600000(98%)],Loss:0.319562,Accuracy:85.570
Epoch10:[600000/600000(100%)],Loss:0.258198,Accuracy:85.632

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值