当前位置: 首页 > news >正文

网站文字优化方案网页设计初学者公司网页设计模板

网站文字优化方案,网页设计初学者公司网页设计模板,邹城建网站,微信网站开发公司以一段新闻报道中的文本描述内容为输入#xff0c;使用模型帮助我们判断它最有可能属于哪一种类型的新闻#xff0c;这是典型的文本分类问题。我们这里假定每种类型是互斥的#xff0c;即文本描述有且只有一种类型#xff0c;例如一篇新闻不能即是娱乐类又是财经类#xf…以一段新闻报道中的文本描述内容为输入使用模型帮助我们判断它最有可能属于哪一种类型的新闻这是典型的文本分类问题。我们这里假定每种类型是互斥的即文本描述有且只有一种类型例如一篇新闻不能即是娱乐类又是财经类只能是一种类别。 一、数据下载与介绍 我们使用的是AG_NEWS数据集已经被集成在了torchtext中下面是下载数据集的代码 注意 如果没有torchtext时使用pip安装时会有一个大坑。 torchtext安装时会检查pytorch的版本如果版本不兼容它会卸载你的torch然后安装一个GPU版本的兼容的torch这个过程是自动的没有什么提示或者大部分人不会具体去看提示这里会非常坑。 我在刚开始安装torchtext后怎么也无法使用GPU我还是以为是显卡有问题了搞了好久最后才发现是torch被变成了CPU版本刚开始不知道就卸载torch然后重装CUDA版本的torch但是没用最后装上的还是CPU版本的torchtorchtext真是霸道往复了几次都不行怎么装都是CUP版本的torch巨坑 怎么寻找正确的torchtext版本 一个简单的规律是torchtext的版本号比torch高一个子版本然后主版本为0, 阶段版本号最好也是对应的。例如 torch1.13.1 对应的 torchtext 应该torchtext 0.14.1 那么应该使用下面命令安装 pip install torchtext0.14.1 上面的规律是对应torch主版本为1的torch主版本为2的可以参考类似的规律。 感谢博客《更新 torchtext 造成的torch版本不匹配的问题》带来的解答。 # 导入有关torch的工具包 import torch as tc import torchtext # 导入torchtext.datasets中的文本分类任务 from torchtext.datasets import AG_NEWS import os# 定义数据下载路径当前路径的data文件夹 load_data_path ./Datasets/ # 如果不存在该路径则创建这个路径 if not os.path.exists(load_data_path):os.makedirs(load_data_path)# 选取torchtext中的文本分类数据集AG_NEWS即新闻主题分类数据保存在指定目录下 # 将数值映射后的训练和验证数据加载到内存中 train_data, test_data AG_NEWS(rootload_data_path, split(train, test))# AG_NEWS返回的数据是一个迭代器每个元素都是一个元组包含文本和标签 for (label, text) in train_data:print(fLabel: {label}, Text: {text}) for (label, text) in test_data:print(fLabel: {label}, Text: {text}) 下载完成后会有两个以.csv结尾的文件 数据集中的内容如下 3,Fears for T N pension after talks,Unions representing workers at Turner   Newall say they are disappointed after talks with stricken parent firm Federal Mogul. 4,The Race is On: Second Private Team Sets Launch Date for Human Spaceflight (SPACE.com),SPACE.com - TORONTO, Canada -- A second\team of rocketeers competing for the  #36;10 million Ansari X Prize, a contest for\privately funded suborbital space flight, has officially announced the first\launch date for its manned rocket. 训练集有12000个样本测试集有7600个样本。一共有四种标签{1,2,3,4}对应{WorldSportsBusinessSCI/Tech}分别指世界性新闻、体育新闻、商业新闻和技术类新闻。每条样本有三列第一列是标签说明该新闻属于哪一类第二列是新闻标题第三列是新闻简述。test.csv和train.csv中的格式相同 二、构建Dataset类读取数据 我们使用上面的代码将数据集进行保存后新建一个Python文件开始构建读取数据的Dataset类代码如下 #!------------------------第一步数据读取构建Dataset类-------------------------------- class AG_NEWS_Data(Dataset):def __init__(self, trainTrue) - None:super().__init__()data_path os.path.join(BASE_PATH, train.csv) if train else os.path.join(BASE_PATH, test.csv) # 设置数据路径本实验中只使用了训练集self.data pd.read_csv(data_path, sep,, headerNone) # 读取数据# print(self.data.head())sen_len [] # 每条样本中文本句子长度self.contents # 所有样本分词后的内容token_number 0 # 所有文本中有多少个不同的分词label_count [] # 所有样本的label标签# * 计算每条样本的长度取出每条样本的标签label拼接所有样本内容到contents中for i in range(self.__len__()):content, label self.__getitem__(i)# for content, label in data:sen_len.append(len(content.split( ))) # 每条样本的长度label_count.append(label) # 取出每条样本的标签labelself.contents content # 拼接样本内容到contents中vocab_dict {v: idx for idx, v in enumerate(set(self.contents.split( )))} # 获取所有分词集合token_number len(vocab_dict)sen_len_distribution {str(i): sen_len.count(i) for i in sorted(set(sen_len))} # 句子长度分布的字典如{80:192,81:689,...},即长度为80的句子有192个...label_n_distribution {str(i): label_count.count(i) for i in set(label_count)} # 标签数量分布的字典如{1:20000,2:20000,...},每个标签对应的样本个数self.vocab_dict, self.token_number, self.sen_len_distribution, self.label_n_distribution vocab_dict, token_number, sen_len_distribution, label_n_distributiondef __len__(self):return self.data.shape[0]def __getitem__(self, index):label int(self.data.iloc[index, 0]) # 提取标签并转换为int类型content self.data.iloc[index, 1] \self.data.iloc[index, 2] # 拼接样本中的题目和内容文本content content.lower() # 将所有单词转换为小写类型# 使用正则表达式只保留文本中的数字和单词将其余信息替换为空格content re.sub(r[^\w\s], , content)content re.sub(r\s, , content) # 将多个空格的位置替换为1个空格return content, label 三、构建网络模型 对网络中的每一层都要设置初始化权重值权重值的初始换范围一般是一个小于1的数可以接近零但不能是0是0的话模型会变得特别难训练大量的经验总结到的。 只设置三层简单的线性层。 #! -------------------第二步构建网络模型构建带有Embedding层的文本分类模型----- class TextSentiment(nn.Module):文本分类模型def __init__(self, vocab_size, embed_dim, num_class):description:类的初始化函数Args:vocab_size (int): 整个语料包含的不同词汇总数embed_dim (int): 指定词嵌入的维度num_class (int): 文本分类的类别总数super().__init__()# 实例化Embedding层sparseTrue代表每次对该层求解梯度只更新部分权重self.embedding nn.Embedding(vocab_size, embedding_dimembed_dim, sparseTrue)# 实例化线性层参数分别是embed_dim和num_classself.fc1 nn.Linear(in_featuresLEN_STA*EMBED_DIM, out_features512)self.fc2 nn.Linear(in_features512, out_features64)self.fc3 nn.Linear(in_features64, out_featuresnum_class)# 为各层初始化权重self.init_weight()def init_weight(self):初始化权重函数# 指定初始权重的取值范围数init_range 0.5# 各层的权重参数都是初始化为均匀分布self.embedding.weight.data.uniform_(-init_range, init_range)for fc in [self.fc1, self.fc2, self.fc3]:fc.weight.data.uniform_(-init_range, init_range)# 偏置初始化为0fc.bias.data.zero_()def forward(self, text):正向计算过程Args:text (list): 文本数值映射后的结果Returns:tensor: 与类别数尺寸相同的张量用以判断文本类别# 获得embedding的结果embedded# 此时embedded的尺寸为m,32)其中m是BACTH_SIZE大小的数据中的词汇总数32为指定词嵌入的维度EMBED_DIM# print(text.shape)embedded self.embedding(text)# embedded F.avg_pool1d(embedded, kernel_size3)x embedded.view(embedded.size(0), -1)# print(embedded.shape)# print(len_sta*EMBED_DIM)x self.fc1(x)x self.fc2(x)x self.fc3(x)return x 四、序列化和长度标准化 规范输入句子的长度并进行序列化即将文本转换为tensor类型的整数才可以进行Embedding操作。 可以使用one-hot编码进行序列化这里为了方便直接使用了[0,1,2,3,4,...,]这种单纯的数字。 def get_length_standard(rate0.9):计算文本内容标准化长度的函数根据样本文本长度的分布情况(从小到大),取前rate的分割点处的长度作为标准长度.Args:rate (float, optional): Defaults to 0.9.Returns:int: 样本文本长度分布中前rate的分割点处的长度value_sum 0 # 统计当前符合条件的样本总数sample_len len(AG_NEWS) # 数据集总长度# 取出每个长度对应的样本数量key句子长度value该长度下的样本数量for key, value in AG_NEWS.sen_len_distribution.items():value_sum int(value)if (value_sum/sample_len rate):return int(key)def get_sen_ser(sentence, len_sta):对样本内容进行标准化和序列化的函数多删少补(补0)Args:sentence (str): [description]len_sta ([type]): [description]Returns:[type]: [description]# 对句子进行序列化vocab_list [AG_NEWS.vocab_dict[v] for v in sentence.split( )]if (len(vocab_list) len_sta):return vocab_list[:len_sta]else:vocab_list.extend([0]*(len_sta-len(vocab_list)))return vocab_list 五、自定义生成Batch的函数  #! --------------------------第四步自定义生成batch的函数----------------------def generate_batch(batch):生成batch数据的函数Args:batch (list): 由样本张量和对应标签的元组组成的batch_size大小的列表形如[(sample1,label1),(sample2,label2),...]Returns:tensor: 样本张量和标签各自的列表形式(张量)形如texttensor([sample1,sample2,....]),labeltensor([label1,label2,....])label [] # 存储样本标签text [] # 存储样本的文本for t, l in batch:# 从batch中获得标签张量text.append(get_sen_ser(t, len_staLEN_STA)) # 对文本进行标准化和序列化处理# 从batch中获得样本张量label.append(int(l)-1) # 序列化标签# text tc.cat(text)# text torch.tensor(np.array(text), devicedevice)text torch.tensor(text, devicedevice)return text, torch.tensor(label, devicedevice) 六、构建训练函数 #!---------------------------第五步构建训练函数---------------------------- def train(train_data):模型训练函数# 初始化训练损失和准确率为0train_loss 0train_acc 0# 使用数据加载器生成BATCH_SIZE大小的数据进行批次训练# data就是N多个generate_batch函数处理后的BATCH_SIZE大小的数据生成器data DataLoader(train_data, batch_sizeBATCH_SIZE,shuffleTrue, collate_fngenerate_batch) # 使用自定义的generate_batch函数# 对data进行循环遍历使用每个batch的数据进行参数更新for text, label in data:# 1、设置优化器初始梯度为0optimizer.zero_grad()# 2、模型输入一个批次数据获得输出label_pre model(text)# 3、根据真实标签与模型输出计算损失loss loss_F(label_pre, label)# 4、误差反向传播loss.backward()# 5、更新参数optimizer.step()# 将该批次的损失加到总损失中train_loss loss.item()# 将该批次的准确率加到总准确率中train_acc (label_pre.argmax(1) label).sum().item()# 使用学习率调节器自动调整学习率scheduler.step()# 返回本轮训练的平均损失和平均准确率return train_loss/len(train_data), train_acc/len(train_data) 七、构建验证函数 #!-----------------------------第六步构建验证函数------------------------ def val(val_data):model.eval()# 初始化训练损失和准确率为0val_loss 0val_acc 0# 使用数据加载器生成BATCH_SIZE大小的数据进行批次训练# data就是N多个generate_batch函数处理后的BATCH_SIZE大小的数据生成器data DataLoader(val_data, batch_sizeBATCH_SIZE,shuffleTrue, collate_fngenerate_batch) # 使用自定义的generate_batch函数with torch.no_grad():for text, label in data:label_pre model(text)# 根据真实标签与模型输出计算损失loss loss_F(label_pre, label)# 将该损失加入到总损失中val_loss loss# 将该次的准确个数加入到总个数中val_acc (label_pre.argmax(1) label).sum().item()# 返回本轮训练的平均损失和平均准确率return val_loss/len(val_data), val_acc/len(val_data) 八、模型训练和验证 if __name__ __main__:# 设置数据的存储路径BASE_PATH rH:\Pytorch学习\Datasets\datasets\AG_NEWS# 检查显卡是否可用device torch.device(cuda:0 if torch.cuda.is_available() else cpu)# 加载训练数据AG_NEWS AG_NEWS_Data(trainTrue) # 加载数据集generator torch.Generator().manual_seed(2024) # 设置随机数生成器和随机种子AG_NEWS_train, AG_NEWS_val random_split( # 划分训练集和验证集AG_NEWS, [0.7, 0.3], generatorgenerator)VOCAB_SIZE len(AG_NEWS.vocab_dict) # 获取train_data语料中包含的不同词汇总数BATCH_SIZE 1000 # 指定BATCH_SIZE的大小EMBED_DIM 32 # 指定词嵌入的维度NUN_CLASS 4 # 类别总数LEARN_RATE 0.005 # 学习率LEN_STA get_length_standard(0.9) # 每句话的规范长度统一长度多删少补EPOCH 100 # 设置数据集迭代次数model TextSentiment(VOCAB_SIZE, EMBED_DIM, NUN_CLASS).to(device) # 实例化模型loss_F nn.CrossEntropyLoss().to(device) # 设置损失函数optimizer optim.SGD(model.parameters(), lrLEARN_RATE) # 设置优化函数scheduler optim.lr_scheduler.StepLR(optimizer, step_size1, gamma0.9) # 设置学习率调整器# 进行模型训练和验证for epoch in range(EPOCH):train_loss, train_acc train(AG_NEWS_train)print(fepoch {epoch}:\ttrain_loss:{train_loss:.6f}\ttrain_acc:{train_acc:.6f}, end\t)val_loss, val_acc val(AG_NEWS_val)print(fval_loss:{val_loss:.6f}\tval_acc:{val_acc:.6f}) 九、完整代码与输出结果 一完整代码 import re import os import pandas as pd import torch.nn as nn from torch.utils.data import Dataset, DataLoader, random_split from torch.utils.data import DataLoader import torch.optim as optim import torch#!------------------------第一步数据读取构建Dataset类----------------------------- class AG_NEWS_Data(Dataset):def __init__(self, trainTrue) - None:super().__init__()data_path os.path.join(BASE_PATH, train.csv) if train else os.path.join(BASE_PATH, test.csv) # 设置数据路径本实验中只使用了训练集self.data pd.read_csv(data_path, sep,, headerNone) # 读取数据# print(self.data.head())sen_len [] # 每条样本中文本句子长度self.contents # 所有样本分词后的内容token_number 0 # 所有文本中有多少个不同的分词label_count [] # 所有样本的label标签# * 计算每条样本的长度取出每条样本的标签label拼接所有样本内容到contents中for i in range(self.__len__()):content, label self.__getitem__(i)# for content, label in data:sen_len.append(len(content.split( ))) # 每条样本的长度label_count.append(label) # 取出每条样本的标签labelself.contents content # 拼接样本内容到contents中vocab_dict {v: idx for idx, v in enumerate(set(self.contents.split( )))} # 获取所有分词集合token_number len(vocab_dict)sen_len_distribution {str(i): sen_len.count(i) for i in sorted(set(sen_len))} # 句子长度分布的字典如{80:192,81:689,...},即长度为80的句子有192个...label_n_distribution {str(i): label_count.count(i) for i in set(label_count)} # 标签数量分布的字典如{1:20000,2:20000,...},每个标签对应的样本个数self.vocab_dict, self.token_number, self.sen_len_distribution, self.label_n_distribution vocab_dict, token_number, sen_len_distribution, label_n_distributiondef __len__(self):return self.data.shape[0]def __getitem__(self, index):label int(self.data.iloc[index, 0]) # 提取标签并转换为int类型content self.data.iloc[index, 1] \self.data.iloc[index, 2] # 拼接样本中的题目和内容文本content content.lower() # 将所有单词转换为小写类型# 使用正则表达式只保留文本中的数字和单词将其余信息替换为空格content re.sub(r[^\w\s], , content)content re.sub(r\s, , content) # 将多个空格的位置替换为1个空格return content, label#! --------------------第二步构建网络模型构建带有Embedding层的文本分类模型------ class TextSentiment(nn.Module):文本分类模型def __init__(self, vocab_size, embed_dim, num_class):description:类的初始化函数Args:vocab_size (int): 整个语料包含的不同词汇总数embed_dim (int): 指定词嵌入的维度num_class (int): 文本分类的类别总数super().__init__()# 实例化Embedding层sparseTrue代表每次对该层求解梯度只更新部分权重self.embedding nn.Embedding(vocab_size, embedding_dimembed_dim, sparseTrue)# 实例化线性层参数分别是embed_dim和num_classself.fc1 nn.Linear(in_featuresLEN_STA*EMBED_DIM, out_features512)self.fc2 nn.Linear(in_features512, out_features64)self.fc3 nn.Linear(in_features64, out_featuresnum_class)# 为各层初始化权重self.init_weight()def init_weight(self):初始化权重函数# 指定初始权重的取值范围数init_range 0.5# 各层的权重参数都是初始化为均匀分布self.embedding.weight.data.uniform_(-init_range, init_range)for fc in [self.fc1, self.fc2, self.fc3]:fc.weight.data.uniform_(-init_range, init_range)# 偏置初始化为0fc.bias.data.zero_()def forward(self, text):正向计算过程Args:text (list): 文本数值映射后的结果Returns:tensor: 与类别数尺寸相同的张量用以判断文本类别# 获得embedding的结果embedded# 此时embedded的尺寸为m,32)其中m是BACTH_SIZE大小的数据中的词汇总数32为指定词嵌入的维度EMBED_DIM# print(text.shape)embedded self.embedding(text)# embedded F.avg_pool1d(embedded, kernel_size3)x embedded.view(embedded.size(0), -1)# print(embedded.shape)# print(len_sta*EMBED_DIM)x self.fc1(x)x self.fc2(x)x self.fc3(x)return x#! ----------------------第三步将每个样本中的句子进行长度标准化和序列化----------------- def get_length_standard(rate0.9):计算文本内容标准化长度的函数根据样本文本长度的分布情况(从小到大),取前rate的分割点处的长度作为标准长度.Args:rate (float, optional): Defaults to 0.9.Returns:int: 样本文本长度分布中前rate的分割点处的长度value_sum 0 # 统计当前符合条件的样本总数sample_len len(AG_NEWS) # 数据集总长度# 取出每个长度对应的样本数量key句子长度value该长度下的样本数量for key, value in AG_NEWS.sen_len_distribution.items():value_sum int(value)if (value_sum/sample_len rate):return int(key)def get_sen_ser(sentence, len_sta):对样本内容进行标准化和序列化的函数多删少补(补0)Args:sentence (str): [description]len_sta ([type]): [description]Returns:[type]: [description]# 对句子进行序列化vocab_list [AG_NEWS.vocab_dict[v] for v in sentence.split( )]if (len(vocab_list) len_sta):return vocab_list[:len_sta]else:vocab_list.extend([0]*(len_sta-len(vocab_list)))return vocab_list#! --------------------------第四步自定义生成batch的函数------------------------- def generate_batch(batch):生成batch数据的函数Args:batch (list): 由样本张量和对应标签的元组组成的batch_size大小的列表形如[(sample1,label1),(sample2,label2),...]Returns:tensor: 样本张量和标签各自的列表形式(张量)形如texttensor([sample1,sample2,....]),labeltensor([label1,label2,....])label [] # 存储样本标签text [] # 存储样本的文本for t, l in batch:# 从batch中获得标签张量text.append(get_sen_ser(t, len_staLEN_STA)) # 对文本进行标准化和序列化处理# 从batch中获得样本张量label.append(int(l)-1) # 序列化标签# text tc.cat(text)# text torch.tensor(np.array(text), devicedevice)text torch.tensor(text, devicedevice)return text, torch.tensor(label, devicedevice)#!-----------------------------------第五步构建训练函数------------------------- def train(train_data):模型训练函数# 初始化训练损失和准确率为0train_loss 0train_acc 0# 使用数据加载器生成BATCH_SIZE大小的数据进行批次训练# data就是N多个generate_batch函数处理后的BATCH_SIZE大小的数据生成器data DataLoader(train_data, batch_sizeBATCH_SIZE,shuffleTrue, collate_fngenerate_batch) # 使用自定义的generate_batch函数# 对data进行循环遍历使用每个batch的数据进行参数更新for text, label in data:# 1、设置优化器初始梯度为0optimizer.zero_grad()# 2、模型输入一个批次数据获得输出label_pre model(text)# 3、根据真实标签与模型输出计算损失loss loss_F(label_pre, label)# 4、误差反向传播loss.backward()# 5、更新参数optimizer.step()# 将该批次的损失加到总损失中train_loss loss.item()# 将该批次的准确率加到总准确率中train_acc (label_pre.argmax(1) label).sum().item()# 使用学习率调节器自动调整学习率scheduler.step()# 返回本轮训练的平均损失和平均准确率return train_loss/len(train_data), train_acc/len(train_data)#!-----------------------------第六步构建验证函数-------------------------- def val(val_data):model.eval()# 初始化训练损失和准确率为0val_loss 0val_acc 0# 使用数据加载器生成BATCH_SIZE大小的数据进行批次训练# data就是N多个generate_batch函数处理后的BATCH_SIZE大小的数据生成器data DataLoader(val_data, batch_sizeBATCH_SIZE,shuffleTrue, collate_fngenerate_batch) # 使用自定义的generate_batch函数with torch.no_grad():for text, label in data:label_pre model(text)# 根据真实标签与模型输出计算损失loss loss_F(label_pre, label)# 将该损失加入到总损失中val_loss loss# 将该次的准确个数加入到总个数中val_acc (label_pre.argmax(1) label).sum().item()# 返回本轮训练的平均损失和平均准确率return val_loss/len(val_data), val_acc/len(val_data)#! --------------------------第七步进行模型训练和验证--------------------------------- if __name__ __main__:# 设置数据的存储路径BASE_PATH rH:\Pytorch学习\Datasets\datasets\AG_NEWS# 检查显卡是否可用device torch.device(cuda:0 if torch.cuda.is_available() else cpu)# 加载训练数据AG_NEWS AG_NEWS_Data(trainTrue) # 加载数据集generator torch.Generator().manual_seed(2024) # 设置随机数生成器和随机种子AG_NEWS_train, AG_NEWS_val random_split( # 划分训练集和验证集AG_NEWS, [0.7, 0.3], generatorgenerator)VOCAB_SIZE len(AG_NEWS.vocab_dict) # 获取train_data语料中包含的不同词汇总数BATCH_SIZE 1000 # 指定BATCH_SIZE的大小EMBED_DIM 32 # 指定词嵌入的维度NUN_CLASS 4 # 类别总数LEARN_RATE 0.005 # 学习率LEN_STA get_length_standard(0.9) # 每句话的规范长度统一长度多删少补EPOCH 100 # 设置数据集迭代次数model TextSentiment(VOCAB_SIZE, EMBED_DIM, NUN_CLASS).to(device) # 实例化模型loss_F nn.CrossEntropyLoss().to(device) # 设置损失函数optimizer optim.SGD(model.parameters(), lrLEARN_RATE) # 设置优化函数scheduler optim.lr_scheduler.StepLR(optimizer, step_size1, gamma0.9) # 设置学习率调整器# 进行模型训练和验证for epoch in range(EPOCH):train_loss, train_acc train(AG_NEWS_train)print(fepoch {epoch}:\ttrain_loss:{train_loss:.6f}\ttrain_acc:{train_acc:.6f}, end\t)val_loss, val_acc val(AG_NEWS_val)print(fval_loss:{val_loss:.6f}\tval_acc:{val_acc:.6f}) 二输出结果 EPOCH 100 设置数据集迭代了100次结果如下可以看出模型能力有限有预测能力但只有一点点。 epoch 0:        train_loss:0.017730     train_acc:0.267131      val_loss:0.003573       val_acc:0.266333 epoch 1:        train_loss:0.002014     train_acc:0.274238      val_loss:0.001452       val_acc:0.284139 epoch 2:        train_loss:0.001417     train_acc:0.289357      val_loss:0.001417       val_acc:0.289583 epoch 3:        train_loss:0.001396     train_acc:0.292762      val_loss:0.001392       val_acc:0.293667 epoch 4:        train_loss:0.001389     train_acc:0.294369      val_loss:0.001386       val_acc:0.298972 epoch 5:        train_loss:0.001383     train_acc:0.298071      val_loss:0.001384       val_acc:0.297611 epoch 6:        train_loss:0.001381     train_acc:0.300738      val_loss:0.001382       val_acc:0.303028 epoch 7:        train_loss:0.001379     train_acc:0.303667      val_loss:0.001379       val_acc:0.302861 epoch 8:        train_loss:0.001376     train_acc:0.304119      val_loss:0.001375       val_acc:0.303528 epoch 9:        train_loss:0.001375     train_acc:0.304893      val_loss:0.001376       val_acc:0.300528 epoch 10:       train_loss:0.001374     train_acc:0.307119      val_loss:0.001372       val_acc:0.308639 epoch 11:       train_loss:0.001372     train_acc:0.308905      val_loss:0.001374       val_acc:0.303667 epoch 12:       train_loss:0.001371     train_acc:0.310357      val_loss:0.001372       val_acc:0.309667 epoch 13:       train_loss:0.001370     train_acc:0.311393      val_loss:0.001372       val_acc:0.309917 epoch 14:       train_loss:0.001369     train_acc:0.311607      val_loss:0.001370       val_acc:0.308667 epoch 15:       train_loss:0.001369     train_acc:0.311929      val_loss:0.001370       val_acc:0.312222 epoch 16:       train_loss:0.001368     train_acc:0.312952      val_loss:0.001369       val_acc:0.309778 epoch 17:       train_loss:0.001368     train_acc:0.313524      val_loss:0.001367       val_acc:0.314528 epoch 18:       train_loss:0.001367     train_acc:0.313905      val_loss:0.001368       val_acc:0.315444 epoch 19:       train_loss:0.001367     train_acc:0.314810      val_loss:0.001367       val_acc:0.315694 epoch 20:       train_loss:0.001366     train_acc:0.315952      val_loss:0.001368       val_acc:0.313333 epoch 21:       train_loss:0.001366     train_acc:0.317262      val_loss:0.001367       val_acc:0.314750 epoch 22:       train_loss:0.001366     train_acc:0.315976      val_loss:0.001366       val_acc:0.316222 epoch 23:       train_loss:0.001365     train_acc:0.317345      val_loss:0.001366       val_acc:0.316139 epoch 24:       train_loss:0.001365     train_acc:0.315976      val_loss:0.001366       val_acc:0.316444 epoch 25:       train_loss:0.001365     train_acc:0.316786      val_loss:0.001366       val_acc:0.314111 epoch 26:       train_loss:0.001365     train_acc:0.316905      val_loss:0.001365       val_acc:0.318611 epoch 27:       train_loss:0.001364     train_acc:0.318774      val_loss:0.001365       val_acc:0.316944 epoch 28:       train_loss:0.001364     train_acc:0.319036      val_loss:0.001366       val_acc:0.314944 epoch 29:       train_loss:0.001364     train_acc:0.318393      val_loss:0.001365       val_acc:0.316111 epoch 30:       train_loss:0.001364     train_acc:0.319250      val_loss:0.001365       val_acc:0.316833 epoch 31:       train_loss:0.001364     train_acc:0.318440      val_loss:0.001365       val_acc:0.317444 epoch 32:       train_loss:0.001364     train_acc:0.319500      val_loss:0.001365       val_acc:0.316444 epoch 33:       train_loss:0.001364     train_acc:0.319333      val_loss:0.001365       val_acc:0.315972 epoch 34:       train_loss:0.001363     train_acc:0.319786      val_loss:0.001365       val_acc:0.315389 epoch 35:       train_loss:0.001363     train_acc:0.319560      val_loss:0.001365       val_acc:0.316583 epoch 36:       train_loss:0.001363     train_acc:0.320024      val_loss:0.001365       val_acc:0.316556 epoch 37:       train_loss:0.001363     train_acc:0.320774      val_loss:0.001365       val_acc:0.316639 epoch 38:       train_loss:0.001363     train_acc:0.320179      val_loss:0.001365       val_acc:0.315889 epoch 39:       train_loss:0.001363     train_acc:0.320393      val_loss:0.001365       val_acc:0.315139 epoch 40:       train_loss:0.001363     train_acc:0.320774      val_loss:0.001365       val_acc:0.316278 epoch 41:       train_loss:0.001363     train_acc:0.320821      val_loss:0.001365       val_acc:0.315167 epoch 42:       train_loss:0.001363     train_acc:0.321167      val_loss:0.001365       val_acc:0.315667 epoch 43:       train_loss:0.001363     train_acc:0.320619      val_loss:0.001365       val_acc:0.316167 epoch 44:       train_loss:0.001363     train_acc:0.320571      val_loss:0.001365       val_acc:0.316778 epoch 45:       train_loss:0.001363     train_acc:0.321714      val_loss:0.001365       val_acc:0.316611 epoch 46:       train_loss:0.001363     train_acc:0.321143      val_loss:0.001365       val_acc:0.316000 epoch 47:       train_loss:0.001363     train_acc:0.321262      val_loss:0.001365       val_acc:0.316056 epoch 48:       train_loss:0.001363     train_acc:0.321429      val_loss:0.001365       val_acc:0.315722 epoch 49:       train_loss:0.001363     train_acc:0.321036      val_loss:0.001365       val_acc:0.315917 epoch 50:       train_loss:0.001363     train_acc:0.321417      val_loss:0.001365       val_acc:0.315639 epoch 51:       train_loss:0.001362     train_acc:0.321560      val_loss:0.001365       val_acc:0.315889 epoch 52:       train_loss:0.001362     train_acc:0.321524      val_loss:0.001365       val_acc:0.316056 epoch 53:       train_loss:0.001362     train_acc:0.321690      val_loss:0.001365       val_acc:0.315889 epoch 54:       train_loss:0.001362     train_acc:0.321429      val_loss:0.001365       val_acc:0.316028 epoch 55:       train_loss:0.001362     train_acc:0.321536      val_loss:0.001365       val_acc:0.316083 epoch 56:       train_loss:0.001362     train_acc:0.321417      val_loss:0.001365       val_acc:0.315639 epoch 57:       train_loss:0.001362     train_acc:0.321476      val_loss:0.001365       val_acc:0.315750 epoch 58:       train_loss:0.001362     train_acc:0.321512      val_loss:0.001365       val_acc:0.315806 epoch 59:       train_loss:0.001362     train_acc:0.321452      val_loss:0.001365       val_acc:0.315861 epoch 60:       train_loss:0.001362     train_acc:0.321750      val_loss:0.001365       val_acc:0.316000 epoch 61:       train_loss:0.001362     train_acc:0.321298      val_loss:0.001365       val_acc:0.315889 epoch 62:       train_loss:0.001362     train_acc:0.321405      val_loss:0.001365       val_acc:0.316000 epoch 63:       train_loss:0.001362     train_acc:0.321607      val_loss:0.001365       val_acc:0.315972 epoch 64:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316111 epoch 65:       train_loss:0.001362     train_acc:0.321452      val_loss:0.001365       val_acc:0.316056 epoch 66:       train_loss:0.001362     train_acc:0.321452      val_loss:0.001365       val_acc:0.316111 epoch 67:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316083 epoch 68:       train_loss:0.001362     train_acc:0.321464      val_loss:0.001365       val_acc:0.316111 epoch 69:       train_loss:0.001362     train_acc:0.321679      val_loss:0.001365       val_acc:0.316139 epoch 70:       train_loss:0.001362     train_acc:0.321476      val_loss:0.001365       val_acc:0.316139 epoch 71:       train_loss:0.001362     train_acc:0.321714      val_loss:0.001365       val_acc:0.316111 epoch 72:       train_loss:0.001362     train_acc:0.321679      val_loss:0.001365       val_acc:0.316056 epoch 73:       train_loss:0.001362     train_acc:0.321560      val_loss:0.001365       val_acc:0.316056 epoch 74:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316028 epoch 75:       train_loss:0.001362     train_acc:0.321548      val_loss:0.001365       val_acc:0.316028 epoch 76:       train_loss:0.001362     train_acc:0.321500      val_loss:0.001365       val_acc:0.316083 epoch 77:       train_loss:0.001362     train_acc:0.321548      val_loss:0.001365       val_acc:0.316056 epoch 78:       train_loss:0.001362     train_acc:0.321571      val_loss:0.001365       val_acc:0.316056 epoch 79:       train_loss:0.001362     train_acc:0.321548      val_loss:0.001365       val_acc:0.316028 epoch 80:       train_loss:0.001362     train_acc:0.321631      val_loss:0.001365       val_acc:0.316028 epoch 81:       train_loss:0.001362     train_acc:0.321512      val_loss:0.001365       val_acc:0.316028 epoch 82:       train_loss:0.001362     train_acc:0.321536      val_loss:0.001365       val_acc:0.316056 epoch 83:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316056 epoch 84:       train_loss:0.001362     train_acc:0.321512      val_loss:0.001365       val_acc:0.316056 epoch 85:       train_loss:0.001362     train_acc:0.321560      val_loss:0.001365       val_acc:0.316056 epoch 86:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316056 epoch 87:       train_loss:0.001362     train_acc:0.321536      val_loss:0.001365       val_acc:0.316056 epoch 88:       train_loss:0.001362     train_acc:0.321548      val_loss:0.001365       val_acc:0.316056 epoch 89:       train_loss:0.001362     train_acc:0.321571      val_loss:0.001365       val_acc:0.316056 epoch 90:       train_loss:0.001362     train_acc:0.321536      val_loss:0.001365       val_acc:0.316056 epoch 91:       train_loss:0.001362     train_acc:0.321560      val_loss:0.001365       val_acc:0.316056 epoch 92:       train_loss:0.001362     train_acc:0.321560      val_loss:0.001365       val_acc:0.316083 epoch 93:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316083 epoch 94:       train_loss:0.001362     train_acc:0.321571      val_loss:0.001365       val_acc:0.316056 epoch 95:       train_loss:0.001362     train_acc:0.321583      val_loss:0.001365       val_acc:0.316056 epoch 96:       train_loss:0.001362     train_acc:0.321548      val_loss:0.001365       val_acc:0.316056 epoch 97:       train_loss:0.001362     train_acc:0.321536      val_loss:0.001365       val_acc:0.316056 epoch 98:       train_loss:0.001362     train_acc:0.321548      val_loss:0.001365       val_acc:0.316056 epoch 99:       train_loss:0.001362     train_acc:0.321560      val_loss:0.001365       val_acc:0.316056
http://www.zqtcl.cn/news/440215/

相关文章:

  • 新乡网站建设哪家公司好阿里巴巴做国际网站多少钱
  • 怎么在悉尼做网站dede做手机网站
  • 企业网站模板免费下载品牌建设专家库推荐表
  • 辽宁智能网站建设推荐网络营销推广方案创意
  • 安阳做一个网站多少钱东营做网站公司
  • 深圳市罗湖网站建设百度自助建站官网
  • 网站开发安装环境网站建设销售话术
  • 网站权重网站栏目划分的原则
  • 国际网站建设的目的我的百度账号登录
  • 温州网站设计定制博客和网站的区别
  • 益阳建设网站wordpress加载图片慢
  • 网站官网阜新网站开发公司
  • 适合做网站的图片印刷公司网站模板
  • 南昌哪家网站建设最好网站建设的方法有
  • 东莞做网站 动点官网百度开户流程
  • 中力建设网站怎么做自己的门户网站
  • 做的网站必须放做音乐网站的目地
  • 网站备案下来以后怎么做网页万网创始人张向东
  • 怎么做网站官方电话品牌营销策划十大要点
  • 上海自适应网站深圳网络推广外包
  • 网站的建设模式是指什么时候开始外网视频网站做泥声控
  • 免费在线观看电影电视剧网站网站建设公司哪家好 在线磐石网络
  • 域名是建网站之前申请吗怎么查看网站开发语言
  • 网站建设业务的延伸性查企业信息查询平台官网免费
  • 网站如何制作的渭南网站建设推广
  • 网站的ico怎么做简单房地产网站
  • 做室内设计通常上的网站关键词挖掘查询工具爱站网
  • 大理住房和城乡建设部网站为食堂写个网站建设
  • 做网站要icp备案吗软件定制开发 报价
  • 外国网站上做雅思考试dw做网站的导航栏