tensorflow的深度学习项目模板

gil-galad的Python项目详细描述



TensorFlow的深度学习项目模板。用于tfdataset处理和超参数优化的实用程序。

开始

打开存储库,导航到本地目录,然后按照下面的快速入门清单进行操作。数据应分为培训、验证和测试集,并以.tfrecords文件格式放在单独的目录中。用于将numpy数组转换为.tfrecords文件的实用程序包含在utils.py模块中。

快速启动清单

  • []在models.py中构建神经网络模型
    • 注意:需要指定以后将优化的超参数。请参见下面的模型选择部分。
  • []在graph.py中连接模型、定义损失、评估指标、优化器等
    • 注意:需要指定以后将优化的超参数。请参见下面的模型选择部分。
  • []在数据形状字典中指定输入数据形状
    • 注意:数据形状不应包含批大小–此信息将传递给采样器
    • 附加说明:数据形状的顺序应与检索图中张量的顺序相对应
      • main.py:data_shapes = {'lowres': (32, 32, 3), 'highres': (128, 128, 3)}
      • graph.py:lowres, highres = data.get_batch()
  • []创建一个datasampler对象,其中包含指向您的训练/有效/测试集的文件路径和数据形状字典。
  • []在字典中定义要优化的超参数及其对应的域范围
  • []通过gilgalad.opt.bayesian_optimization
  • [](可选)在plotting.py中添加自定义打印功能。通过tfplot将任何matplotlib图形发送到tensorboard。

型号选择

gil-galad模型选择是通过sherpa的bayesian优化套件进行的,该套件利用sklearn的高斯过程模块。贝叶斯优化通过核函数和先验函数指定函数的分布。这里,均值函数对应于一个代理目标函数,其预测变量为模型超参数。函数的先验分布通过bayes规则进行更新,以说明独立变量指定模型的试运行,而因变量是在验证数据集上对此类模型的求值。

使用gil galad,我们通过向graph类传递一个参数字典来指定要优化的超参数,同时在graph和模型构建期间定义默认超参数,如下所示:

图形级别

classGraph(BaseGraph):def__init__(self,network,sampler,logdir=None,ckptdir=None):self.network=networkself.data=samplerself.logdir=logdirself.ckptdir=ckptdirself.build_graph()defbuild_graph(self,params=None):tf.reset_default_graph()self.data.initialize()self.x,self.y,self.z=self.data.get_batch()self.y_=self.network(self.x,params=params)self.loss=tf.losses.mean_squared_error(self.y,self.y_)update_ops=tf.get_collection(tf.GraphKeys.UPDATE_OPS)withtf.control_dependencies(update_ops):opt=tf.train.AdamOptimizer(learning_rate=params['lr']ifparamselse0.001)self.update=opt.minimize(loss=self.loss,var_list=self.network.vars,global_step=self.global_step)

模型级别

classModel(BaseModel):def__init__(self,name):self.name=namedef__call__(self,x,params):withtf.variable_scope(self.name)asvs:y=conv_2d(x=x,filters=params['filters']ifparamselse64,kernel_size=params['kernel_size']ifparamselse3,strides=2,activation=params['activation']ifparamselse'relu')returny

然后在字典中定义超参数域的类型和范围。此信息将图形对象作为贝叶斯优化函数的参数。

importgilgaladasgghyperparameters={'Discrete':{'filters':[64,128],'kernel_size':[3,5]},'Continuous':{'lr':[1e-5,1e-3]},'Choice':{'activation':['relu','prelu']}}best_model=gg.opt.bayesian_optimization(graph=graph,params=hyperparameters,max_trials=50)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java RMI客户端访问被拒绝   java让JavaFX事件监听器与我的方法对话   java与xml spring配置相关   java当我在字符串中插入这个XML Soap请求时,为什么Eclipse会给我一个错误?   音频音频合成   java创建了一个Tic-Tac-Toe应用程序,我有一个bug,它每次在同一个正方形上声明一个平局   java为返回的字符串值设置参数   Java中的ClassFormatError   java在启动后更改Spring云配置服务器uri   用Java中的自定义类替换默认字符串类   java junit测试套件:ClassNotFoundException   java自定义对象集包含相同的对象   通过关系查找的java Spring数据CRUDepository   java将数据存储到aerospike中   java使用itextpdf将添加内容的pdf转换为安卓中的位图   java正在遍历队列的concurrentHashMap,以查看是否所有队列都是空的,而其他线程可能会添加到队列中   java Hibernate:未找到本机查询异常   java Mockito准确地验证所有参数   java我可以在它自己的类中声明一个对象吗?