zoukankan      html  css  js  c++  java
  • 预备知识

    为了看完SRCNN的keras训练代码,罗列了一些预备知识

    迭代器

    凡是可迭代对象,均可被迭代。通过for循环来遍历list或tuple,这种遍历我们称为迭代(Iteration)。
    迭代字典
    for value in d.values():
    for k, v in d.items():
    迭代字符串
    for ch in 'ABC':
    判断是否是可迭代对象
    from collections import Iterable
    isinstance('abc', Iterable) # str是否可迭代
    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列
    for i, value in enumerate(['A', 'B', 'C']):
    print(i, value)

    for语句就是获取了容器的迭代器、调用迭代器的next()方法以及对StopIteration进行处理等
    容器需要遵守迭代器协议,实现__iter__,__next__
    迭代器模式(Iterator pattern) 按需一次获取一个数据项。
    迭代器有惰性求值的特性,它进可以在迭代至当前元素时才计算,所以非常适合遍历元素非常多的容器,而且更省内存。

    generator

    列表生成式
    [m + n for m in 'ABC' for n in 'XYZ']

    获得generator的多种方式
    g = (x * x for x in range(10))

    使用yeild,将函数变为generator
    def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
    yield b
    a, b = b, a + b
    n = n + 1
    return 'done'
    g = fib(6)

    定义实现迭代器协议的类
    __iter__,__next__

    class Fab(object):
        def __init__(self, max):
            self.max = max
            self.n, self.a, self.b = 0, 0, 1
    
        def __iter__(self):
            return self
    
        def __next__(self):
            if self.n < self.max:
                r = self.b
                self.a, self.b = self.b, self.a + self.b
                self.n = self.n + 1
                return r
            raise StopIteration()
    
    for one in Fab(5):
        print(one)
    

      

    常用的函数
    判断是否文件
    isfile(f)

    读取image 范围[0,255]
    from PIL import Image
    image = np.asarray(Image.open(f).convert('RGB'))

    图片的缩放
    from scipy import misc
    scaled = misc.imresize(image, 1.0/scale, 'bicubic')

    对获取的文件做搅拌
    random.shuffle(files)
    将list转化为numpy的array
    x_inputs = np.asarray(images)

    定义使用keras的callback,实时监控训练的过程
    使用示例
    model.fit(X_train, Y_train, batch_size=128, epochs=20, verbose=0, callbacks=[history])

    继承keras.callbacks.Callback
    ModelCheckpoint
    该回调函数将在每个epoch后保存模型到filepath
    EarlyStopping
    当监测值不再改善时,该回调函数将中止训练
    TensorBoard
    可视化的展示器
    该回调函数将日志信息写入TensorBorad,使得你可以动态的观察训练和测试指标的图像以及不同层的激活值直方图
    可以继承Callback自定义类,有以下函数可以override
    def on_epoch_begin(self, epoch, logs=None):
    pass
    def on_epoch_end(self, epoch, logs=None):
    pass
    def on_batch_begin(self, batch, logs=None):
    pass
    def on_batch_end(self, batch, logs=None):
    pass
    ...

  • 相关阅读:
    如何让json_decode解码变的更加强壮
    scp命令
    Centos7安装postgresql
    ubuntu安装Java环境
    ubuntu开放端口
    VMware安装Ubuntu
    redis主从安装
    redis主从学习
    redis集群学习
    C++ 09 顺序容器
  • 原文地址:https://www.cnblogs.com/ceo1207/p/9937383.html
Copyright © 2011-2022 走看看