###2018年6月5日
shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。这在非环形数据结构中防止资源泄露很有帮助。使得指针可以共享对象,并且不用考虑内存泄漏问题。
**内存泄漏(Memory Leak)**是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
vector::clear()函数的作用是清空容器中的内容,但如果是指针对象的话,并不能清空其内容,必须要像以下方法一样才能达到清空指针对象的内容
// Vector作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector<int>&a, vector<int>&b) // 其中的“&”绝对不能少!!!
// 简单的使用方法如下:
vector<int>test; // 建立一个vector
test.push_back(1);
test.push_back(2); // 把1和2压入vector,这样test[0]就是1,test[1]就是2
// 获取指针要调用.get()方法
shared_ptr<Blob<Dtype> > dn_; // the probabilities of sending samples to left subtrees
sigmoid_top_vec_.push_back(dn_.get());
c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同。这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针。
int caffe_rng_rand() 函数:返回一个随机数
函数 void *memcpy(void *dest, void *src, unsigned int count) :把src所指向的内存区域 copy到dest所指向的内存区域, count为块的大小
#include <stdio.h>
#include <math.h>
int main()
{
double param, result;
param = 5.0;
result = exp(param);
printf("The exponential value of %f is %f.\n", param, result);
return 0;
}
用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性
###2018年6月8日
# 由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内
void *memcpy(void*dest, const void *src, size_t n);
###2018年6月10日
vs2015多行注释与取消多行注释 :
注释: 先CTRL+K,然后CTRL+C
取消注释: 先CTRL+K,然后CTRL+U
产生一定范围随机数的通用表示公式是:
取得(0,x)的随机整数:rand()%x;
取得(a,b)的随机整数:rand()%(b-a);
取得[a,b)的随机整数:rand()%(b-a)+a;
取得[a,b]的随机整数:rand()%(b-a+1)+a;
取得(a,b]的随机整数:rand()%(b-a)+a+1;
取得0-1之间的浮点数:rand()/double(RAND_MAX)。
#include<iostream>
#include<cstdlib>
#include<ctime>
#define random(a,b) (rand()%(b-a+1)+a)
using namespace std;
int main()
{
srand((unsigned)time(NULL));
for(int i=0;i<10;i++)
cout<<random(1,100)<<' ';
return 0;
}
###2018年6月12日
import sys
#添加caffe下的python文件夹的路径
sys.path.append("../caffe-master/python")
import caffe
import numpy as np
import os
#使用caffemodel进行训练
weights = 'googlenet_bn_stepsize_6400_iter_1200000.caffemodel'
caffe.set_device(0) #选择0号GPU
caffe.set_mode_gpu() #使用GPU模式
solver = caffe.SGDSolver('solver.prototxt') #加载solver文件
solver.net.copy_from(weights) #加载caffemodel
solver.solve() #开始运行
#使用solverstate继续之前的训练
s = "googlenet_bn_stepsize_6400_iter_1200000.solverstate"
caffe.set_device(0) #选择0号GPU
caffe.set_mode_gpu() #使用GPU模式
solver = caffe.SGDSolver('solver.prototxt')#加载solver文件
solver.restore(s) #加载solverstate
solver.solve() #开始运行