Python深度学习基于PyTorch加载VGG19使用方法 (Chapter 12 实战生产式模型 Section 12.1 DeepDream模型 )

VGG16及VGG19预训练模型可以到本人上传资源去下载。 

import torch
import torch.nn as nn
from torchvision import models
from torchvision import transforms, utils
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from PIL import Image, ImageFilter, ImageChops
 
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
dtype = torch.float
 
 
def load_image(path):
    image = Image.open(path)
    plt.imshow(image)
    plt.title("Image loaded successfully")
    return image
 
normalise = transforms.Normalize(
    mean=[0.485, 0.456, 0.406],
    std=[0.229, 0.224, 0.225]
    )
 
preprocess = transforms.Compose([
    transforms.Resize((224,224)),
    transforms.ToTensor(),
    normalise
    ])
 
def deprocess(image):
    images=image * torch.tensor([0.229, 0.224, 0.225],device=device)  + torch.tensor([0.485, 0.456, 0.406],device=device)
    return  images
 
 
#加载已经放到本地的VGG19载预训练模型,可与下面这边博客对比着看,下面几行是唯一的差别
#https://blog.csdn.net/a15261893837/article/details/107074632
vgg = models.vgg19(pretrained=False)
#下面是VGG19模型本地放置的绝对路径,根据自己放置位置填写就可以了
#C:\Users\shh\.cache\torch\checkpoints\vgg19-dcbb9e9d.pth
pre = torch.load(r'C:\Users\shh\.cache\torch\checkpoints\vgg19-dcbb9e9d.pth')
vgg.load_state_dict(pre)

# vgg = models.vgg19(pretrained=True)
#vgg = vgg.to(device)
print(vgg)
modulelist = list(vgg.features.modules())
 
 
def prod(image, layer, iterations, lr):   
    input = preprocess(image).unsqueeze(0)
    input=input.to(device).requires_grad_(True)
    vgg.zero_grad()
    for i in range(iterations):
        out = input
        for j in range(layer):
            out = modulelist[j+1](out)
        #以特征值的L2为损失值    
        loss = out.norm()
        loss.backward()
        #使梯度增大
        with torch.no_grad():
            input += lr * input.grad
            
    
    input = input.squeeze()
    #交互维度
    input.transpose_(0,1)
    input.transpose_(1,2)
    #使数据限制在[0,1]之间
    input = np.clip(deprocess(input).detach().cpu().numpy(), 0, 1)
    im = Image.fromarray(np.uint8(input*255))
    return im
 
 
 
 
def deep_dream_vgg(image, layer, iterations, lr, octave_scale=2, num_octaves=20):
    
    if num_octaves>0:
        image1 = image.filter(ImageFilter.GaussianBlur(2))
        if(image1.size[0]/octave_scale < 1 or image1.size[1]/octave_scale<1):
            size = image1.size
            
        else:            
            size = (int(image1.size[0]/octave_scale), int(image1.size[1]/octave_scale))
        #缩小图片    
        image1 = image1.resize(size,Image.ANTIALIAS)
        image1 = deep_dream_vgg(image1, layer, iterations, lr, octave_scale, num_octaves-1)
        
        size = (image.size[0], image.size[1])
        #放大图片
        image1 = image1.resize(size,Image.ANTIALIAS)
        image = ImageChops.blend(image, image1, 0.6)
 
    img_result = prod(image, layer, iterations, lr)
    img_result = img_result.resize(image.size)
    plt.imshow(img_result)
    return img_result
 
 
 
 
night_sky = load_image('data/starry_night.jpg')
#使用VGG19的第32层
night_sky_32 = deep_dream_vgg(night_sky, 32, 6, 0.2)
#使用VGG19的第8层
night_sky_8 = deep_dream_vgg(night_sky, 8, 6, 0.2)
#使用VGG19的第4层
night_sky_4 = deep_dream_vgg(night_sky, 4, 6, 0.2)

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyTorch是一个用于深度学习的开源Python库,它是一种动态计算图框架,可以使模型的训练更加灵活。它提供了大量的高级功能,如自动微分、动态图构建和高级优化算法。 PyTorch与TensorFlow和Keras等深度学习框架相比,更容易上手,易于使用。 ### 回答2: Python深度学习基于pytorch编程平台是近年来兴起的应用领域,其主要目的是为了研究和解决人工智能领域中的各种问题。Pytorch是一个基于Python语言的机器学习库,其可以被定义为一个深度学习框架,它提供了高效的动态图计算机制和灵活的神经网络构建方,从而使得其成为深度学习领域中最受欢迎的开源编程平台之一。 首先,Python深度学习基于pytorch所具备的简单易用性是其受欢迎的主要原因之一。Pytorch提供了丰富的工具和模块,通过这些工具和模块,可以让开发者快速搭建和实现各种深度学习算法,并且可以方便地进行调试和优化。同时,Pytorch还具备非常广泛的支持,可以直接调用许多优秀的Python科学计算和机器学习库。 其次,Python深度学习基于pytorch具备很高的执行效率。Pytorch利用现代显卡所提供的高并行计算能力,使得深度学习领域的模型可以在GPU上高效地运行,从而大大提高了深度学习算法的训练速度和精度。此外,Pytorch还采用了动态计算图的机制,可以大大简化模型的构建和调试,使得其成为日益流行的深度学习开发工具。 最后,Python深度学习基于pytorch所具备的可扩展性也非常强。开发者可以利用Pytorch的API快速开发新的机器学习算法,而且可以灵活地利用Pytorch的丰富的功能来实现应用程序的各种需求。同时,由于Pytorch是一个开源的编程平台,其具有极高的可定制性和可扩展性,能够满足各种应用场景和需求。 综上所述,Python深度学习基于pytorch的出现,极大地方便和加快了深度学习模型的开发、训练和应用,大大推动了深度学习技术的发展。在未来,Python深度学习基于pytorch将继续发挥其作用成为人工智能和深度学习领域的重要技术之一。 ### 回答3: 深度学习是一种新型的人工智能技术,深度学习在图像识别、语音识别、自然语言处理、游戏AI等领域有着广泛的应用。其中,python语言是深度学习领域非常流行的编程语言。而Pytorch是一个基于python深度学习框架,可以提供高效的张量计算和动态神经网络的构建。在深度学习领域,用Pytorch进行模型的训练和测试,能够更快地进行模型迭代,加速深度学习的过程。 Python深度学习基于Pytorch的优势: 1. 易于学习和实现:Python语言简单易懂,Pytorch的强大API使得模型构建和优化更加容易实现。 2. 动态图机制:Pytorch采用动态图机制,允许在定义和使用模型时进行灵活的操作和自适应的调整,使得深度学习的过程更具灵活性,加速了模型迭代过程。 3. 并行计算:Pytorch充分利用GPU的并行计算能力,加速深度学习的训练和测试。 4. 丰富的工具和框架支持:Pytorch有强大的工具和框架支持,如FAQ、github等社区,能够满足不同群体的需求。 Python深度学习基于Pytorch的应用: 1. 图像识别和分类:在图像处理领域中,Pytorch能够训练所有的图像识别和分类的卷积神经网络模型,如ResNet、Inception等。 2. 文本处理:Pytorch能够在自然语言处理领域中,训练NLP的模型,例如文本生成、情感预测、机器翻译等。 3. 强化学习:Pytorch也被广泛用于开发强化学习的算法和应用,它支持常见的强化学习算法实现,如DQN、A3C等。 总之,Python深度学习基于Pytorch是一种高效、灵活、易于使用深度学习工具。它为开发者提供了一个快速、可扩展、灵活的深度学习框架,可以促进深度学习的应用和推广。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值