python保存模型 特征_Pytorch提取模型特征向量保存至csv的例子

Pytorch提取模型特征向量

# -*- coding: utf-8 -*-

"""

dj

"""

import torch

import torch.nn as nn

import os

from torchvision import models, transforms

from torch.autograd import Variable

import numpy as np

from PIL import Image

import torchvision.models as models

import pretrainedmodels

import pandas as pd

class FCViewer(nn.Module):

def forward(self, x):

return x.view(x.size(0), -1)

class M(nn.Module):

def __init__(self, backbone1, drop, pretrained=True):

super(M,self).__init__()

if pretrained:

img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained='imagenet')

else:

img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained=None)

self.img_encoder = list(img_model.children())[:-2]

self.img_encoder.append(nn.AdaptiveAvgPool2d(1))

self.img_encoder = nn.Sequential(*self.img_encoder)

if drop > 0:

self.img_fc = nn.Sequential(FCViewer())

else:

self.img_fc = nn.Sequential(

FCViewer())

def forward(self, x_img):

x_img = self.img_encoder(x_img)

x_img = self.img_fc(x_img)

return x_img

model1=M('resnet18',0,pretrained=True)

features_dir = '/home/cc/Desktop/features'

transform1 = transforms.Compose([

transforms.Resize(256),

transforms.CenterCrop(224),

transforms.ToTensor()])

file_path='/home/cc/Desktop/picture'

names = os.listdir(file_path)

print(names)

for name in names:

pic=file_path+'/'+name

img = Image.open(pic)

img1 = transform1(img)

x = Variable(torch.unsqueeze(img1, dim=0).float(), requires_grad=False)

y = model1(x)

y = y.data.numpy()

y = y.tolist()

#print(y)

test=pd.DataFrame(data=y)

#print(test)

test.to_csv("/home/cc/Desktop/features/3.csv",mode='a+',index=None,header=None)

jiazaixunlianhaodemoxing

import torch

import torch.nn.functional as F

import torch.nn as nn

import torch.optim as optim

import torchvision

import torchvision.transforms as transforms

import argparse

class ResidualBlock(nn.Module):

def __init__(self, inchannel, outchannel, stride=1):

super(ResidualBlock, self).__init__()

self.left = nn.Sequential(

nn.Conv2d(inchannel, outchannel, kernel_size=3, stride=stride, padding=1, bias=False),

nn.BatchNorm2d(outchannel),

nn.ReLU(inplace=True),

nn.Conv2d(outchannel, outchannel, kernel_size=3, stride=1, padding=1, bias=False),

nn.BatchNorm2d(outchannel)

)

self.shortcut = nn.Sequential()

if stride != 1 or inchannel != outchannel:

self.shortcut = nn.Sequential(

nn.Conv2d(inchannel, outchannel, kernel_size=1, stride=stride, bias=False),

nn.BatchNorm2d(outchannel)

)

def forward(self, x):

out = self.left(x)

out += self.shortcut(x)

out = F.relu(out)

return out

class ResNet(nn.Module):

def __init__(self, ResidualBlock, num_classes=10):

super(ResNet, self).__init__()

self.inchannel = 64

self.conv1 = nn.Sequential(

nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1, bias=False),

nn.BatchNorm2d(64),

nn.ReLU(),

)

self.layer1 = self.make_layer(ResidualBlock, 64, 2, stride=1)

self.layer2 = self.make_layer(ResidualBlock, 128, 2, stride=2)

self.layer3 = self.make_layer(ResidualBlock, 256, 2, stride=2)

self.layer4 = self.make_layer(ResidualBlock, 512, 2, stride=2)

self.fc = nn.Linear(512, num_classes)

def make_layer(self, block, channels, num_blocks, stride):

strides = [stride] + [1] * (num_blocks - 1) #strides=[1,1]

layers = []

for stride in strides:

layers.append(block(self.inchannel, channels, stride))

self.inchannel = channels

return nn.Sequential(*layers)

def forward(self, x):

out = self.conv1(x)

out = self.layer1(out)

out = self.layer2(out)

out = self.layer3(out)

out = self.layer4(out)

out = F.avg_pool2d(out, 4)

out = out.view(out.size(0), -1)

out = self.fc(out)

return out

def ResNet18():

return ResNet(ResidualBlock)

import os

from torchvision import models, transforms

from torch.autograd import Variable

import numpy as np

from PIL import Image

import torchvision.models as models

import pretrainedmodels

import pandas as pd

class FCViewer(nn.Module):

def forward(self, x):

return x.view(x.size(0), -1)

class M(nn.Module):

def __init__(self, backbone1, drop, pretrained=True):

super(M,self).__init__()

if pretrained:

img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained='imagenet')

else:

img_model = ResNet18()

we='/home/cc/Desktop/dj/model1/incption--7'

# 模型定义-ResNet

#net = ResNet18().to(device)

img_model.load_state_dict(torch.load(we))#diaoyong

self.img_encoder = list(img_model.children())[:-2]

self.img_encoder.append(nn.AdaptiveAvgPool2d(1))

self.img_encoder = nn.Sequential(*self.img_encoder)

if drop > 0:

self.img_fc = nn.Sequential(FCViewer())

else:

self.img_fc = nn.Sequential(

FCViewer())

def forward(self, x_img):

x_img = self.img_encoder(x_img)

x_img = self.img_fc(x_img)

return x_img

model1=M('resnet18',0,pretrained=None)

features_dir = '/home/cc/Desktop/features'

transform1 = transforms.Compose([

transforms.Resize(56),

transforms.CenterCrop(32),

transforms.ToTensor()])

file_path='/home/cc/Desktop/picture'

names = os.listdir(file_path)

print(names)

for name in names:

pic=file_path+'/'+name

img = Image.open(pic)

img1 = transform1(img)

x = Variable(torch.unsqueeze(img1, dim=0).float(), requires_grad=False)

y = model1(x)

y = y.data.numpy()

y = y.tolist()

#print(y)

test=pd.DataFrame(data=y)

#print(test)

test.to_csv("/home/cc/Desktop/features/3.csv",mode='a+',index=None,header=None)

以上这篇Pytorch提取模型特征向量保存至csv的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab画图-非常具体,非常全面

Matlab画图 强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本參数就能得到所需图形,这类函数称为高层画图函数。此外,Matlab还提供了直接对…

openfeign使用_Feign使用基于配置服务发现

之前写了篇《Feign在实际项目中的应用实践总结》Feign在实际项目中的应用实践总结 - 沐风之境 - 博客园​www.cnblogs.com总结了在一般项目中如何使用Feign这个提升开发效率的利器。最近在看Feign的文档的时候发现了之前遗漏的一些点,所以写了这篇文章进行补充。pom…

Oracle按用户进行统计信息更新

按用户进行统计信息更新 PL/sqldev工具使用system用户连接到oracle,打开命令窗口执行以下SQL,用户名请根据实际情况进行更改: begin dbms_stats.gather_schema_stats( ownname > testuser, estimate_percent > dbms_stats.aut…

个人使命宣言

最近在阅读《高效人士的7个习惯》,其中提到个人使命宣言,也就是个人的行为宪法,有了这个宪法我们在日常生活和工作中才能有法可循有法可依,才不至于在纷繁的社会中迷失自己。通过思考自我感觉制作个人使命宣言还是非常有用的&…

jq js json 转字符串_JS中JSON对象和String之间的互转及处理技巧

json:JavaScript 对象表示法(javascript Object Notation),其实JSON就是一个javaScript的对象(Object)而已。如有不清楚JSON,可以去w3cschool了解http://www.w3school.com.cn/json/1.在Javascript中新建一个字符串(JSON文本)。 var txt { &q…

php中__autoload()方法详解

原文地址:http://www.php100.com/html/php/lei/2013/0905/5267.html[导读] PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个…

python读取sql_从python读取sql的实例方法

从python读取sql的方法: 1、利用python内置的open函数读入sql文件; 2、利用第三方库pymysql中的connect函数连接mysql服务器; 3、利用第三方库pandas中的read_sql方法读取传入的sql文件即可。 python 直接读取 sql 文件,达到使用 …

我笨,但我不傻

2019独角兽企业重金招聘Python工程师标准>>> 威哥说:很多朋友给我留言,在学习的过程中如何坚持下去,关于努力和目标,我想谈谈自己的理解,有不同见解的地方,欢迎留言跟我探讨哈。 if(努力苦逼) r…

GNU make manual 翻译( 一百零四)

继续翻译 4.7 Rules without Recipes or Prerequisites If a rule has no prerequisites or recipe, and the target of the rule is a nonexistent file, then make imagines this target to have been updated whenever its rule is run. This implies that all targets dep…

mysql 数字 除以 一万_腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...

腾讯股票接口:大单数据http://stock.finance.qq.com/sstock/list/view/dadan.php?tjs&csz002451&max80&p1&opt10&o0opt10 11 12 13 分别对应成交额大于等于(100万 200万 500万 1000万)opt1,2,3,4,5,6,7,8 分别对应成交量大于等于(100手 200手 …

asp.net url传值,弹窗

一,<a>标签链接式传值 1&#xff0c; <a href"News_list.aspx?ClassID<%#((DataRowView)Container.DataItem)["ClassID"]%>&Editor<%#((DataRowView)Container.DataItem)["Editor"]%>" >传值</a> 2, <a&g…

windows下python视频加速调节_Windows下python+ffmpeg实现批量提取、切割视频中的音频...

废话不说&#xff0c;直接上代码 #遍历所有mp4文件名->文件名改为字母形式->fffmpeg批量提取音频、切割音频->改回中文名 import os import subprocess current os.getcwd() dirs os.listdir(current) for i in dirs: if os.path.splitext(i)[1] ".mp4":…

(转)千万别熬夜:身体器官晚上工作时间表一览

原文连接&#xff1a;http://jiuyinguan.blog.163.com/blog/static/20907903720126801015713/ 任何试图更改生物钟的行为&#xff0c;都将给身体留下莫名其妙的疾病&#xff0c;20、30年之后再后悔&#xff0c;已经来不及了。 一、晚上9-11点为免疫系统&#xff08;淋巴&#x…

伯纳德•罗森伯格先生参加华为技术2016首届国际光电连接技术研讨会

近日&#xff0c;来自罗森伯格德国总部的CTO首席技术官伯纳德罗森伯格先生参加了由华为技术组织的2016首届国际光电连接技术研讨会。本届研讨会华为共邀请了来自全球的约十家著名光电技术领先厂家及合作伙伴参与&#xff0c;共同探讨未来数十年的光纤电子技术发展方向并分享最新…

如何使用python效率_Python的5中提高效率的用法

任何编程语言的高级特征通常都是通过大量的使用经验才发现的。比如你在编写一个复杂的项目&#xff0c;并在 stackoverflow 上寻找某个问题的答案。然后你突然发现了一个非常优雅的解决方案&#xff0c;它使用了你从不知道的 Python 功能&#xff01;这种学习方式太有趣了&…

记“debug alipay”一事

背景&#xff1a;客户支付成功&#xff0c;无法返回支付结果 查找原因&#xff0c;追踪代码: verified AlipayNotify.verify(params,alipayConfig.sign_type,alipayConfig.partner,alipayConfig.key,alipayConfig.input_charset); if (!verified) { Debug.logError("##…

Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

&#xff08;本文是基于老版本的VS和Xamarin&#xff0c;而VS2017已经集成了Xamarin&#xff0c;所以&#xff0c;本文已经过时&#xff0c;最新的Xamarin开发介绍请参见 使用 Xamarin开发手机聊天程序 。&#xff09; 如果是.NET开发人员&#xff0c;想学习手机应用开发&#…

内网穿透 无需公网ip_无需端口映射、无需公网IP,60秒实现FTP服务远程访问

互联网的一大特点是实现信息共享&#xff0c;其中文件传输是信息共享十分重要的内容之一。科技公司更是离不开它。销售、库存、客户资料等等数据需要随时共享同步。当需要考虑到文件传输安全、传输质量、传输稳定性、访问控制等诸多因素时&#xff0c;FTP服务器就成了解决文件传…

mysql查询的时候会涉及到锁_Mysql 查询 锁的问题?

以下五种方法可以快速定位全局锁的位置&#xff0c;仅供参考。方法1&#xff1a;利用 metadata_locks 视图此方法仅适用于 MySQL 5.7 以上版本&#xff0c;该版本 performance_schema 新增了 metadata_locks&#xff0c;如果上锁前启用了元数据锁的探针(默认是未启用的)&#x…

Clojure:导入lein项目到IntelliJ IDEA

首先&#xff0c;我们需要先创建一个lein项目&#xff08;废话。。&#xff09; lein new [项目名称] 然后生成Maven的pom.xml文件 cd [项目目录]lein pom 最后&#xff0c;在InteliJ IDEA中选择导入Maven项目&#xff0c;选择刚刚生成的pom.xml文件即可。 转载于:https://www.…