人工智能基础及应用 第7章 7-4-基于GAN的手写数字图像生成方法-程序代码_第1页
人工智能基础及应用 第7章 7-4-基于GAN的手写数字图像生成方法-程序代码_第2页
人工智能基础及应用 第7章 7-4-基于GAN的手写数字图像生成方法-程序代码_第3页
人工智能基础及应用 第7章 7-4-基于GAN的手写数字图像生成方法-程序代码_第4页
人工智能基础及应用 第7章 7-4-基于GAN的手写数字图像生成方法-程序代码_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于GAN的手写数字图像生成方法实验平台实验平台主要包括硬件实验平台和软件实验平台。硬件实验平台采用Intel(R)Core(TM)i7-11700@2.50GHz处理器,NVIDIAGeForceGTX3060显卡和32GB运行内存。软件实验平台采用Ubuntu20.04操作系统,Python3.9编程语言,Pytorch2.1深度学习框架。数据集实验在MNIST数据集上进行。MNIST数据集是一个广泛用于机器学习和图像识别研究的手写数字图像数据集。该数据集包含60,000张用于训练的图像和10,000张用于测试的图像,每张图像都是28x28像素的灰度图,标签为0到9的数字。在使用MNIST数据集训练GAN之前,需要对数据进行预处理。这一步骤包括将图像的像素值归一化到[-1,1]的范围内。这样的归一化不仅能够加速神经网络的训练过程,还能提升模型的整体性能。程序代码importos#引入库importrandomimporttimeimportmatplotlib.pyplotaspltimportnumpyasnpimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFfromtorch.autogradimportVariablefromtorch.utils.dataimportDataLoaderfromtorchvisionimportdatasets,transforms,utilsIn

[2]:dataroot="MNIST"#定义超参数batch_size=100image_size=28latent_z_dim=100num_epochs=200lr=0.0002seed=0In

[3]:random.seed(seed)#设置环境变量os.environ["PYTHONASHSEED"]=str(seed)np.random.seed(seed)torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)torch.backends.cudnn.deterministic=Truetorch.backends.cudnn.benchmark=Falsedevice=torch.device("cuda:0"iftorch.cuda.is_available()else"cpu")In

[4]:train_data=datasets.MNIST(#构造训练数据集root=dataroot,train=True,transform=transforms.Compose([transforms.Resize(image_size),transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,)),]),download=True,)test_data=datasets.MNIST(root=dataroot,train=False,transform=transforms.Compose([transforms.Resize(image_size),transforms.ToTensor(),transforms.Normalize((0.5,),(0.5,)),]),)dataset=train_data+test_datadataloader=DataLoader(dataset=dataset,batch_size=batch_size,shuffle=True)In

[5]:inputs=next(iter(dataloader))[0]#可视化部分训练数据集plt.figure(figsize=(10,10))plt.title("TrainingImages")plt.axis("off")inputs=utils.make_grid(inputs[:100]*0.5+0.5,nrow=10)plt.imshow(inputs.permute(1,2,0))Out[5]:<matplotlib.image.AxesImageat0x7e651c04a4f0>In

[6]:classGenerator(nn.Module):#定义生成网络的结构def__init__(self,latent_z_dim,image_size):super(Generator,self).__init__()self.fc1=nn.Linear(latent_z_dim,256)self.fc2=nn.Linear(256,256*2)self.fc3=nn.Linear(256*2,256*4)self.fc4=nn.Linear(256*4,image_size*image_size)defforward(self,x):x=F.leaky_relu(self.fc1(x),0.2)x=F.leaky_relu(self.fc2(x),0.2)x=F.leaky_relu(self.fc3(x),0.2)returntorch.tanh(self.fc4(x))netG=Generator(latent_z_dim,image_size).to(device)print(netG)Generator((fc1):Linear(in_features=100,out_features=256,bias=True)(fc2):Linear(in_features=256,out_features=512,bias=True)(fc3):Linear(in_features=512,out_features=1024,bias=True)(fc4):Linear(in_features=1024,out_features=784,bias=True))In

[7]:classDiscriminator(nn.Module):#定义判别网络的结构def__init__(self,image_size):super(Discriminator,self).__init__()self.fc1=nn.Linear(image_size*image_size,1024)self.fc2=nn.Linear(self.fc1.out_features,self.fc1.out_features//2)self.fc3=nn.Linear(self.fc2.out_features,self.fc2.out_features//2)self.fc4=nn.Linear(self.fc3.out_features,1)defforward(self,x):x=F.leaky_relu(self.fc1(x),0.2)x=F.dropout(x,0.3)x=F.leaky_relu(self.fc2(x),0.2)x=F.dropout(x,0.3)x=F.leaky_relu(self.fc3(x),0.2)x=F.dropout(x,0.3)returntorch.sigmoid(self.fc4(x))netD=Discriminator(image_size).to(device)print(netD)Discriminator((fc1):Linear(in_features=784,out_features=1024,bias=True)(fc2):Linear(in_features=1024,out_features=512,bias=True)(fc3):Linear(in_features=512,out_features=256,bias=True)(fc4):Linear(in_features=256,out_features=1,bias=True))In

[8]:criterion=nn.BCELoss()#定义损失函数和优化器fixed_noise=torch.randn(batch_size,latent_z_dim).to(device)optimizerD=torch.optim.Adam(netD.parameters(),lr=lr)optimizerG=torch.optim.Adam(netG.parameters(),lr=lr)In

[9]:img_list=[]G_losses=[]D_losses=[]withtorch.no_grad():#在未训练时,利用GAN,生成图像fake=(netG(fixed_noise).reshape(batch_size,1,image_size,image_size).detach().cpu())img_list.append(utils.make_grid(fake*0.5+0.5,nrow=10))forepochinrange(num_epochs):#训练GANbegin_time=time.time()fori,(imgs,_)inenumerate(dataloader):netD.zero_grad()x_real,y_real=imgs.reshape(batch_size,-1),torch.ones(batch_size,1)#在真实图像分布中,采样图像样本x_real,y_real=Variable(x_real.to(device)),Variable(y_real.to(device))D_output=netD(x_real)D_real_loss=criterion(D_output,y_real)z=Variable(torch.randn(batch_size,latent_z_dim).to(device))#在先验噪声分布中,采样噪声样本x_fake,y_fake=netG(z),Variable(torch.zeros(batch_size,1).to(device))D_output=netD(x_fake)D_fake_loss=criterion(D_output,y_fake)D_loss=D_real_loss+D_fake_loss#根据判别网络的损失函数,利用梯度下降法,更新判别网络参数D_loss.backward()optimizerD.step()netG.zero_grad()z=Variable(torch.randn(batch_size,latent_z_dim).to(device))#在先验噪声分布中,采样噪声样本y=Variable(torch.ones(batch_size,1).to(device))G_output=netG(z)D_output=netD(G_output)G_loss=criterion(D_output,y)#根据生成网络的损失函数,利用梯度下降法,更新生成网络参数G_loss.backward()optimizerG.step()end_time=time.time()#打印当前GAN的训练状态run_time=round(end_time-begin_time)print(f"Epoch:[{epoch+1:0>{len(str(num_epochs))}}/{num_epochs}]",f"Step:[{i+1:0>{len(str(len(dataloader)))}}/{len(dataloader)}]",f"Loss-D:{D_loss.item():.4f}",f"Loss-G:{G_loss.item():.4f}",end="\r",)G_losses.append(G_loss.item())D_losses.append(D_loss.item())withtorch.no_grad():#保存当前epoch中GAN的生成结果fake=(netG(fixed_noise).reshape(batch_size,1,image_size,image_size).detach().cpu())img_list.append(utils.make_grid(fake*0.5+0.5,nrow=10))print()Epoch:[001/200]Step:[700/700]Loss-D:2.6298Loss-G:0.42802Epoch:[002/200]Step:[700/700]Loss-D:0.2660Loss-G:3.3967Epoch:[003/200]Step:[700/700]Loss-D:0.6059Loss-G:3.2715Epoch:[004/200]Step:[700/700]Loss-D:0.3739Loss-G:3.1626Epoch:[005/200]Step:[700/700]Loss-D:0.4516Loss-G:2.2246Epoch:[006/200]Step:[700/700]Loss-D:0.7173Loss-G:2.4492Epoch:[007/200]Step:[700/700]Loss-D:0.7566Loss-G:1.6104Epoch:[008/200]Step:[700/700]Loss-D:0.6176Loss-G:2.6028Epoch:[009/200]Step:[700/700]Loss-D:0.5383Loss-G:2.4221Epoch:[010/200]Step:[700/700]Loss-D:0.8624Loss-G:2.1261Epoch:[011/200]Step:[700/700]Loss-D:0.6914Loss-G:1.9539Epoch:[012/200]Step:[700/700]Loss-D:0.6955Loss-G:3.1147Epoch:[013/200]Step:[700/700]Loss-D:0.7491Loss-G:2.0021Epoch:[014/200]Step:[700/700]Loss-D:0.8748Loss-G:2.5479Epoch:[015/200]Step:[700/700]Loss-D:0.8073Loss-G:1.5017Epoch:[016/200]Step:[700/700]Loss-D:0.8381Loss-G:1.8019Epoch:[017/200]Step:[700/700]Loss-D:0.9508Loss-G:1.8468Epoch:[018/200]Step:[700/700]Loss-D:0.9694Loss-G:1.5909Epoch:[019/200]Step:[700/700]Loss-D:0.8786Loss-G:1.4397Epoch:[020/200]Step:[700/700]Loss-D:0.8314Loss-G:1.9080Epoch:[021/200]Step:[700/700]Loss-D:0.9898Loss-G:1.1095Epoch:[022/200]Step:[700/700]Loss-D:1.2113Loss-G:1.4268Epoch:[023/200]Step:[700/700]Loss-D:1.1063Loss-G:1.3060Epoch:[024/200]Step:[700/700]Loss-D:1.0377Loss-G:1.3784Epoch:[025/200]Step:[700/700]Loss-D:0.9431Loss-G:1.2591Epoch:[026/200]Step:[700/700]Loss-D:0.9238Loss-G:1.3955Epoch:[027/200]Step:[700/700]Loss-D:1.1041Loss-G:1.4423Epoch:[028/200]Step:[700/700]Loss-D:1.0546Loss-G:1.3819Epoch:[029/200]Step:[700/700]Loss-D:1.2088Loss-G:1.1962Epoch:[030/200]Step:[700/700]Loss-D:1.1542Loss-G:1.1035Epoch:[031/200]Step:[700/700]Loss-D:1.1230Loss-G:1.2757Epoch:[032/200]Step:[700/700]Loss-D:0.9645Loss-G:1.5314Epoch:[033/200]Step:[700/700]Loss-D:1.0891Loss-G:1.0439Epoch:[034/200]Step:[700/700]Loss-D:1.1881Loss-G:1.1905Epoch:[035/200]Step:[700/700]Loss-D:1.2512Loss-G:1.1083Epoch:[036/200]Step:[700/700]Loss-D:1.1603Loss-G:0.9537Epoch:[037/200]Step:[700/700]Loss-D:0.9695Loss-G:1.5371Epoch:[038/200]Step:[700/700]Loss-D:1.0833Loss-G:1.1194Epoch:[039/200]Step:[700/700]Loss-D:1.1497Loss-G:0.8967Epoch:[040/200]Step:[700/700]Loss-D:1.2525Loss-G:1.0991Epoch:[041/200]Step:[700/700]Loss-D:1.1583Loss-G:1.1275Epoch:[042/200]Step:[700/700]Loss-D:1.2014Loss-G:0.8420Epoch:[043/200]Step:[700/700]Loss-D:1.1847Loss-G:0.9032Epoch:[044/200]Step:[700/700]Loss-D:1.0906Loss-G:1.4185Epoch:[045/200]Step:[700/700]Loss-D:1.1308Loss-G:1.0607Epoch:[046/200]Step:[700/700]Loss-D:1.1098Loss-G:1.0159Epoch:[047/200]Step:[700/700]Loss-D:1.1354Loss-G:1.0544Epoch:[048/200]Step:[700/700]Loss-D:1.0594Loss-G:1.1247Epoch:[049/200]Step:[700/700]Loss-D:1.1907Loss-G:0.9697Epoch:[050/200]Step:[700/700]Loss-D:1.0957Loss-G:0.9977Epoch:[051/200]Step:[700/700]Loss-D:1.4529Loss-G:1.0218Epoch:[052/200]Step:[700/700]Loss-D:1.2115Loss-G:1.0344Epoch:[053/200]Step:[700/700]Loss-D:1.2121Loss-G:1.0342Epoch:[054/200]Step:[700/700]Loss-D:1.2065Loss-G:1.0560Epoch:[055/200]Step:[700/700]Loss-D:1.2905Loss-G:0.8135Epoch:[056/200]Step:[700/700]Loss-D:1.1767Loss-G:0.8963Epoch:[057/200]Step:[700/700]Loss-D:1.2243Loss-G:1.0901Epoch:[058/200]Step:[700/700]Loss-D:1.2603Loss-G:1.2626Epoch:[059/200]Step:[700/700]Loss-D:1.2428Loss-G:0.9907Epoch:[060/200]Step:[700/700]Loss-D:1.0823Loss-G:1.2864Epoch:[061/200]Step:[700/700]Loss-D:1.2020Loss-G:1.2775Epoch:[062/200]Step:[700/700]Loss-D:1.2958Loss-G:0.8040Epoch:[063/200]Step:[700/700]Loss-D:1.0713Loss-G:1.0007Epoch:[064/200]Step:[700/700]Loss-D:1.2613Loss-G:0.9939Epoch:[065/200]Step:[700/700]Loss-D:1.1202Loss-G:1.1183Epoch:[066/200]Step:[700/700]Loss-D:1.1295Loss-G:1.0033Epoch:[067/200]Step:[700/700]Loss-D:1.1648Loss-G:0.9982Epoch:[068/200]Step:[700/700]Loss-D:1.3166Loss-G:0.8594Epoch:[069/200]Step:[700/700]Loss-D:1.2113Loss-G:0.8981Epoch:[070/200]Step:[700/700]Loss-D:1.2506Loss-G:1.0491Epoch:[071/200]Step:[700/700]Loss-D:1.1745Loss-G:1.0588Epoch:[072/200]Step:[700/700]Loss-D:1.2815Loss-G:0.9934Epoch:[073/200]Step:[700/700]Loss-D:1.2629Loss-G:0.9715Epoch:[074/200]Step:[700/700]Loss-D:1.1628Loss-G:0.9390Epoch:[075/200]Step:[700/700]Loss-D:1.1908Loss-G:1.1028Epoch:[076/200]Step:[700/700]Loss-D:1.2146Loss-G:0.9110Epoch:[077/200]Step:[700/700]Loss-D:1.2962Loss-G:0.8938Epoch:[078/200]Step:[700/700]Loss-D:1.1746Loss-G:1.0185Epoch:[079/200]Step:[700/700]Loss-D:1.2383Loss-G:0.9389Epoch:[080/200]Step:[700/700]Loss-D:1.2122Loss-G:0.9171Epoch:[081/200]Step:[700/700]Loss-D:1.2231Loss-G:0.9891Epoch:[082/200]Step:[700/700]Loss-D:1.2712Loss-G:1.0224Epoch:[083/200]Step:[700/700]Loss-D:1.1546Loss-G:1.0685Epoch:[084/200]Step:[700/700]Loss-D:1.2364Loss-G:0.9338Epoch:[085/200]Step:[700/700]Loss-D:1.1856Loss-G:1.0110Epoch:[086/200]Step:[700/700]Loss-D:1.2659Loss-G:0.8256Epoch:[087/200]Step:[700/700]Loss-D:1.1860Loss-G:1.0297Epoch:[088/200]Step:[700/700]Loss-D:1.2151Loss-G:0.8271Epoch:[089/200]Step:[700/700]Loss-D:1.2751Loss-G:0.9527Epoch:[090/200]Step:[700/700]Loss-D:1.2429Loss-G:0.8584Epoch:[091/200]Step:[700/700]Loss-D:1.2556Loss-G:0.9353Epoch:[092/200]Step:[700/700]Loss-D:1.3300Loss-G:0.9895Epoch:[093/200]Step:[700/700]Loss-D:1.3377Loss-G:1.1163Epoch:[094/200]Step:[700/700]Loss-D:1.2773Loss-G:0.8455Epoch:[095/200]Step:[700/700]Loss-D:1.2609Loss-G:0.8512Epoch:[096/200]Step:[700/700]Loss-D:1.3003Loss-G:0.9189Epoch:[097/200]Step:[700/700]Loss-D:1.2054Loss-G:1.0469Epoch:[098/200]Step:[700/700]Loss-D:1.2571Loss-G:0.8516Epoch:[099/200]Step:[700/700]Loss-D:1.2088Loss-G:0.9475Epoch:[100/200]Step:[700/700]Loss-D:1.2265Loss-G:0.7725Epoch:[101/200]Step:[700/700]Loss-D:1.3076Loss-G:0.9178Epoch:[102/200]Step:[700/700]Loss-D:1.2302Loss-G:0.9209Epoch:[103/200]Step:[700/700]Loss-D:1.3152Loss-G:0.8502Epoch:[104/200]Step:[700/700]Loss-D:1.2628Loss-G:0.9955Epoch:[105/200]Step:[700/700]Loss-D:1.1883Loss-G:0.8207Epoch:[106/200]Step:[700/700]Loss-D:1.2290Loss-G:0.9742Epoch:[107/200]Step:[700/700]Loss-D:1.3331Loss-G:0.8670Epoch:[108/200]Step:[700/700]Loss-D:1.3274Loss-G:1.0019Epoch:[109/200]Step:[700/700]Loss-D:1.3722Loss-G:0.7797Epoch:[110/200]Step:[700/700]Loss-D:1.2409Loss-G:0.8988Epoch:[111/200]Step:[700/700]Loss-D:1.2776Loss-G:1.0250Epoch:[112/200]Step:[700/700]Loss-D:1.2267Loss-G:0.9120Epoch:[113/200]Step:[700/700]Loss-D:1.2608Loss-G:0.9768Epoch:[114/200]Step:[700/700]Loss-D:1.3323Loss-G:0.8949Epoch:[115/200]Step:[700/700]Loss-D:1.1668Loss-G:0.8826Epoch:[116/200]Step:[700/700]Loss-D:1.2122Loss-G:0.9634Epoch:[117/200]Step:[700/700]Loss-D:1.2520Loss-G:0.7840Epoch:[118/200]Step:[700/700]Loss-D:1.2321Loss-G:0.8533Epoch:[119/200]Step:[700/700]Loss-D:1.3635Loss-G:0.9543Epoch:[120/200]Step:[700/700]Loss-D:1.2582Loss-G:0.8231Epoch:[121/200]Step:[700/700]Loss-D:1.3835Loss-G:0.8494Epoch:[122/200]Step:[700/700]Loss-D:1.2589Loss-G:0.8017Epoch:[123/200]Step:[700/700]Loss-D:1.2958Loss-G:0.9133Epoch:[124/200]Step:[700/700]Loss-D:1.3221Loss-G:0.7946Epoch:[125/200]Step:[700/700]Loss-D:1.2831Loss-G:0.8281Epoch:[126/200]Step:[700/700]Loss-D:1.2919Loss-G:0.8753Epoch:[127/200]Step:[700/700]Loss-D:1.2013Loss-G:0.9243Epoch:[128/200]Step:[700/700]Loss-D:1.2902Loss-G:0.7926Epoch:[129/200]Step:[700/700]Loss-D:1.1998Loss-G:0.9862Epoch:[130/200]Step:[700/700]Loss-D:1.3048Loss-G:0.8667Epoch:[131/200]Step:[700/700]Loss-D:1.2556Loss-G:0.8030Epoch:[132/200]Step:[700/700]Loss-D:1.2615Loss-G:0.8323Epoch:[133/200]Step:[700/700]Loss-D:1.3575Loss-G:0.8905Epoch:[134/200]Step:[700/700]Loss-D:1.3578Loss-G:0.8667Epoch:[135/200]Step:[700/700]Loss-D:1.1623Loss-G:0.9370Epoch:[136/200]Step:[700/700]Loss-D:1.3714Loss-G:0.7638Epoch:[137/200]Step:[700/700]Loss-D:1.2418Loss-G:0.8594Epoch:[138/200]Step:[700/700]Loss-D:1.3066Loss-G:0.7944Epoch:[139/200]Step:[700/700]Loss-D:1.3360Loss-G:0.9791Epoch:[140/200]Step:[700/700]Loss-D:1.3380Loss-G:0.7769Epoch:[141/200]Step:[700/700]Loss-D:1.3843Loss-G:0.9089Epoch:[142/200]Step:[700/700]Loss-D:1.2310Loss-G:0.8021Epoch:[143/200]Step:[700/700]Loss-D:1.2502Loss-G:0.8966Epoch:[144/200]Step:[700/700]Loss-D:1.3719Loss-G:0.7489Epoch:[145/200]Step:[700/700]Loss-D:1.2364Loss-G:0.9130Epoch:[146/200]Step:[700/700]Loss-D:1.2858Loss-G:0.8425Epoch:[147/200]Step:[700/700]Loss-D:1.3294Loss-G:0.8344Epoch:[148/200]Step:[700/700]Loss-D:1.3011Loss-G:0.8288Epoch:[149/200]Step:[700/700]Loss-D:1.2740Loss-G:0.8189Epoch:[150/200]Step:[700/700]Loss-D:1.2982Loss-G:0.7735Epoch:[151/200]Step:[700/700]Loss-D:1.3760Loss-G:0.8077Epoch:[152/200]Step:[700/700]Loss-D:1.3423Loss-G:0.8513Epoch:[153/200]Step:[700/700]Loss-D:1.2989Loss-G:0.9298Epoch:[154/200]Step:[700/700]Loss-D:1.4011Loss-G:0.7672Epoch:[155/200]Step:[700/700]Loss-D:1.2660Loss-G:0.9641Epoch:[156/200]Step:[700/700]Loss-D:1.2410Loss-G:0.8376Epoch:[157/200]Step:[700/700]Loss-D:1.2688Loss-G:0.8382Epoch:[158/200]Step:[700/700]Loss-D:1.2155Loss-G:0.7991Epoch:[159/200]Step:[700/700]Loss-D:1.2805Loss-G:0.8597Epoch:[160/200]Step:[700/700]Loss-D:1.2428Loss-G:0.7842Epoch:[161/200]Step:[700/700]Loss-D:1.2923Loss-G:0.9074Epoch:[162/200]Step:[700/700]Loss-D:1.2742Loss-G:0.9275Epoch:[163/200]Step:[700/700]Loss-D:1.2601Loss-G:0.7908Epoch:[164/200]Step:[700/700]Loss-D:1.3043Loss-G:0.8518Epoch:[165/200]Step:[700/700]Loss-D:1.3601Loss-G:0.8359Epoch:[166/200]Step:[700/700]Loss-D:1.3008Loss-G:0.9038Epoch:[167/200]Step:[700/700]Loss-D:1.3226Loss-G:0.8349Epoch:[168/200]Step:[700/700]Loss-D:1.1811Loss-G:0.8654Epoch:[169/200]Step:[700/700]Loss-D:1.3129Loss-G:0.8091Epoch:[170/200]Step:[700/700]Loss-D:1.2560Loss-G:0.7981Epoch:[171/200]Step:[700/700]Loss-D:1.3985Loss-G:0.8360Epoch:[172/200]Step:[700/700]Loss-D:1.3894Loss-G:0.7521Epoch:[173/200]Step:[700/700]Loss-D:1.2820Loss-G:0.9930Epoch:[174/200]Step:[700/700]Loss-D:1.2335Loss-G:0.9529Epoch:[175/200]Step:[700/700]Loss-D:1.3048Loss-G:0.8511Epoch:[176/200]Step:[700/700]Loss-D:1.2188Loss-G:0.8239Epoch:[177/200]Step:[700/700]Loss-D:1.2588Loss-G:0.8500Epoch:[178/200]Step:[700/700]Loss-D:1.3462Loss-G:0.9318Epoch:[1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论