PyCaffe-mean文件转换成npy文件

    在我们使用Pycaffe的过程中需要有时会碰到需要mean.npy文件的情况,这个npy文件就是训练时候的均值文件mean.binaryproto转化而来的,下面代码使用时基本不需要变动,直接修改相关mean文件的路径以及生成文件的保存路径就可以了,下面就直接上代码:

#coding=utf-8

import caffe
import numpy as np

# 待转换的pb格式图像均值文件路径
MEAN_PROTO_PATH = '/PATH/TO/READ/mean.binaryproto' 
# 转换后的numpy格式图像均值文件路径          
MEAN_NPY_PATH = '/PATH/TO/SAVE/mean.npy'   

 # 创建protobuf blob
blob = caffe.proto.caffe_pb2.BlobProto()          
# 读入mean.binaryproto文件内容
data = open(MEAN_PROTO_PATH, 'rb' ).read()  
 # 解析文件内容到blob       
blob.ParseFromString(data)                        
# 将blob中的均值转换成numpy格式,array的shape (mean_number,channel, hight, width)
array = np.array(caffe.io.blobproto_to_array(blob))
 # 一个array中可以有多组均值存在,故需要通过下标选择其中一组均值
mean_npy = array[0]                               
np.save(MEAN_NPY_PATH ,mean_npy)
为了将MNIST数据集转换成npy文件,可以按照以下步骤进行操作: ```python # 导入必要的库 import numpy as np import pickle import os # 定义_load_img函数,用于将数据集转换成numpy数组 def _load_img(file_name): with open(file_name, 'rb') as f: data = np.frombuffer(f.read(), np.uint8, offset=16) data = data.reshape(-1, 784) return data # 定义_load_label函数,用于将标签转换成numpy数组 def _load_label(file_name): with open(file_name, 'rb') as f: labels = np.frombuffer(f.read(), np.uint8, offset=8) return labels # 定义_convert_numpy函数,用于将MNIST数据集转换成numpy数组 def _convert_numpy(): dataset = {} dataset['train_img'] = _load_img('train-images-idx3-ubyte') dataset['train_label'] = _load_label('train-labels-idx1-ubyte') dataset['test_img'] = _load_img('t10k-images-idx3-ubyte') dataset['test_label'] = _load_label('t10k-labels-idx1-ubyte') return dataset # 定义download_mnist函数,用于下载MNIST数据集并将其转换成npy文件 def download_mnist(save_dir): url_base = 'http://yann.lecun.com/exdb/mnist/' file_names = ['train-images-idx3-ubyte.gz', 'train-labels-idx1-ubyte.gz', 't10k-images-idx3-ubyte.gz', 't10k-labels-idx1-ubyte.gz'] save_file = os.path.join(save_dir, 'mnist.pkl') dataset = _convert_numpy() print("Creating pickle file ...") with open(save_file, 'wb') as f: pickle.dump(dataset, f, -1) print("Done!") ``` 以上代码中,_load_img函数用于将图像数据转换成numpy数组,_load_label函数用于将标签数据转换成numpy数组,_convert_numpy函数用于将MNIST数据集转换成numpy数组,download_mnist函数用于下载MNIST数据集并将其转换成npy文件。在download_mnist函数中,首先调用_convert_numpy函数将MNIST数据集转换成numpy数组,然后将其保存为npy文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值