.npy文件是一种存放数据的文件格式。.npy格式是用python程序生成的,只能用python程序读取和显示。
转自:https://jingyan.baidu.com/article/7f41ecec26081d593d095c18.html
例如:
imgs_test = np.load(self.npy_path+"/imgs_test.npy")
一次性输出30个相同的‘-’符号
print('-'*30)
关于args和kwargs
*args可以当作可容纳多个变量组成的list;**kwargs可以当作容纳多个key和value的dictionary
转自:https://blog.csdn.net/chenjinyu_tang/article/details/8136841
数据类型转换 astype
imgs_test = imgs_test.astype('float32')
对@property的理解和使用
转自:https://blog.csdn.net/u013205877/article/details/77804137
这里的核心讲的就是@property作为了get方法的替换,对应的@setter是作为对set方法的替换。这样在调用函数的时候有输入那就是作为对@setter的输入,不然就是从@property里面读取属性。
class myUnet(object):
def __init__(self, img_rows = 240, img_cols = 240):
self.img_rows = img_rows
self.img_cols = img_cols
# 参数初始化定义
……
# 载入数据
@property
def get_unet(self):
inputs = Input((self.img_rows, self.img_cols,1))
控制台输出:
(?, 240, 240, 64)这里我的理解是这个U-net网络的大小为240*240*64的。
这里就是在不断的建立新的父Class,里面包含__init和他要用到的函数;之后用他产生子Class,去调用父类的函数。这个父类及其函数可以放在其他辅助文件下,这样主文件看起来结构更清晰。
在data.py的r 231的imgs_test.npy来源暂时不明。
imgs_test = np.load(self.npy_path+"/imgs_test.npy")
Keras和TensorFlow的关系和区别
转自:https://blog.csdn.net/capecape/article/details/78390246
TensorFlow和theano都是深度学习框架,TensorFlow和theano比较灵活,也比较难学,它们其实就是一个微分器。(这里我改了)
Keras其实就是TensorFlow和Keras的接口(Keras作为前端,TensorFlow或theano作为后端),它也很灵活,且比较容易学。可以把keras看作为tensorflow封装后的一个API。
所以说,在这里看到的
from keras.models import *
from keras.layers import *
from keras.optimizers import *
from keras.callbacks import ModelCheckpoint, LearningRateScheduler
from keras import backend as keras
就是在Pycharm输入keras作为前端调用TensorFlow,也便有了在debug时的
而我们使用的Pycharm是调试器。
PyTorch vs TensorFlow,哪个更适合你
转自:https://yq.aliyun.com/articles/183473(2017年文章)
这里对Pytorch和Tensorflow两种框架做了:起源、接受度、图的动态定义 vs 静态定义、调试、可视化、部署、框架or库的对比并且得出了结论。
这里列一个表,作为对这篇文章的重点内容的简单整理:
TensorFlow | PyTorch | |
起源 | 谷歌大脑开发,并在谷歌公司中广泛地应用于研究生产 | Torch框架的表亲,Torch是基于lua开发的,在Facebook公司里被广泛使用;重写&定制目的:为了得到更快的速度和本地化 |
接受度 | 在研究人员和行业专业人士接受度高,易于使用 | 比较新(仍处于测试阶段),但发展迅速 |
图的定义 | 在模型能够运行之前静态地定义图;与外部世界的所有通信都通过tf.Session 对象和tf.Placeholder 来执行 | 可随时定义、随时更改、随时执行节点,并且没有特殊的会话接口或占位符 |
调试 | 需要tfdbg的特殊工具,该工具允许在运行时评估TensorFlow表达式,并浏览会话内的所有张量和操作(这里不是可以用keras作为api在Pycharm里面调试的吗?) | 可以使用任何一个调试工具,比如pdb、ipdb、PyCharm调试器或者原始的print语句 |
可视化 | Tensorboard 在训练模型的时候,你可以在调整某些超参数之后再训练一遍。两次运行过程可以同时显示在Tensorboard上,以显示它们之间存在的差异。Tensorboard能够:
| 没有一个类似于Tensorboard的工具,但有一个可以将Tensorboard集成进来的工具。 |
部署 | TensorFlow Serving的框架,用于在一个指定的gRPC服务器上部署模型;支持分布式训练 | 可以使用Flask或者另一种替代方法来基于模型编写一个REST API;分布式训练目前仅支持Linux |
框架 or 库 | 纯TensorFlow看起来更像是一个库,而不是框架:所有的操作都在低层次进行,因此不得不编写大量的样板代码; 在使用TensorFlow以及选择适合任务的框架上有着很大的自由度,你可以在这些框架中选择:TFLearn、tf.contrib.learn、Sonnet、Keras、或者纯 | datasets 模块,包含了用于评测深度学习架构的流行数据集的包装。nn.Module 可用于构建一个自定义的卷积神经网络分类器。 nn.Module 一个构建块,可用于创建复杂的深度学习架构。 torch.nn 包中有大量可用作模型基础的模块;torch.nn.Module 能够以面向对象的方式来定义可重用的模块,这种方法非常灵活强大。torch.nn.Sequential 来组成各种模块。可以以函数的形式使用所有的内置模块,非常方便。 |
结论 | 非常强大非常成熟的深度学习库,具有非常强大的可视化功能,以及有多个可供选择的框架来进行高级模型开发; 如果你有以下需求,那么TensorFlow是一个很好的选择:
| 一个年轻的框架,但其发展速度越来越快; 如果你有以下需求,它可能会比较适合你:
|