Keras_Yolov3 函数学习

train.py

1.np.array构造函数

	用法:np.array([1,2,3,4,5]) 

1.1 numpy array 和 python list 有什么区别?

标准Python的列表(list)中,元素本质是对象。如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU。因此,Numpy提供了ndarray(N-dimensional array object)对象:存储单一数据类型的多维数组。

1.2 如何强制生成一个 float 类型的数组

d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], dtype=np.float)

2.numpy中的reshape中参数为-1 :reshape(-1,2)

数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。(-1相当于一个预留的空,由后续计算填充)

3.Python List len()方法

len() 方法返回列表元素个数。
语法:len(list)
参数:list – 要计算元素个数的列表。
返回值:返回列表元素个数。

4.str.format()

格式化字符串的函数,它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。

5.load_weights()

keras源码engine中toplogy.py定义了加载权重的函数:load_weights(self, filepath, by_name=False)其中默认by_name为False,这时候加载权重按照网络拓扑结构加载,适合直接使用keras中自带的网络模型,如VGG16VGG19/resnet50等,
若将by_name改为True则加载权重按照layer的name进行,layer的name相同时加载权重,适合用于改变了模型的相关结构或增加了节点但利用了原网络的主体结构情况下使用:
model.load_weights(filepath,by_name=True)

6.np.random.shuffle(x)

现场修改序列,改变自身内容。(类似洗牌,打乱顺序)

7.np.random.rand(d0, d1, …, dn)

根据给定维度生成[0,1)之间的数据,包含0,不包含1
dn表格每个维度 np.random.rand(2,3) 2行3列
返回值为指定维度的array

8.Image.resize(size, resample=0)

返回此图像的调整大小的副本。
参数:
size(width,height)
resample 一个可选的重采样过滤器。
返回值: Image对象。

其中:
PIL.Image.NEAREST:最低质量
PIL.Image.BILINEAR:双线性
PIL.Image.BICUBIC:三次样条插值
PIL.Image.ANTIALIAS:最高质量

9.Python实现图像几何变换

实现方法如下:
import Image
try:
im=Image.open(‘test.jpg’)
#out = im.resize((128, 128)) #改变大小
#out = im.rotate(45) #45°旋转
#out = im.transpose(Image.FLIP_LEFT_RIGHT) #水平翻转
#out = im.transpose(Image.FLIP_TOP_BOTTOM) #垂直翻转
#out = im.transpose(Image.ROTATE_90) # 90
#out = im.transpose(Image.ROTATE_180) #180°顺时针翻转
out = im.transpose(Image.ROTATE_270) #270°顺时针翻转
out.save(‘test2.jpg’)
except IOError:
print ‘No File!’

model.py

1.Python高级用法之【组成函数】(function composition)

compose()函数,使用Python的Lambda表达式,顺次执行函数列表,且前一个函数的输出是后一个函数的输入。compose()函数适用于在神经网络中连接两个层。

 def double(x):   
	 return x * 2 
 def inc(x):    
	 return x + 1 
 def dec(x):	
 	return x - 1 
 def compose_2(f, g):    
 	return lambda x: f(g(x)) 
 print(compose_2(compose_2(double, inc), dec)(20))

def compose(*funcs):
    if funcs:
        return reduce(lambda f, g: lambda *a, **kw: g(f(*a, **kw)), funcs)
    else:
        raise ValueError('Composition of empty sequence not supported.')
def func_x(x):
    return x * 10
def func_y(y):
    return y - 6
z = compose(func_x, func_y)  # 先执行x函数,再执行y函数
print(z(10))  # 10*10-6=94

参考链接:https://blog.csdn.net/leviopku/article/details/82151602

2. python [:-1] [::-1]的理解

line = “abcde”
line[:-1]
结果为:‘abcd’
line = “abcde”
line[::-1]
结果为:‘edcba’
line[:-1]其实就是去除了这行文本的最后一个字符(换行符)后剩下的部分。

tips:

神经网络中padding的两种方式“SAME”和“VALID”
1.padding=‘SAME‘
卷积核在进行卷积时候,假设原图是3X3,卷积核为2x2,步长为2,当向右滑动两步之后,VALID方式发现余下的窗口不到2×2所以直接将第三列舍弃,而SAME方式并不会把多出的一列丢弃,但是只有一列了就填充一列0
2.padding=‘VALID’
卷积核在进行卷积时候,假设原图是3X3,卷积核为2x2,步长为2,当向右滑动两步之后,VALID方式发现余下的窗口不到2×2时候将第三列舍弃

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值