使用telegram bot的ml库(keras、chainer)通知

notifyker的Python项目详细描述


通知者

ml库的通知程序和管理程序bot:keras和chainer

特点:

  • 获取培训状态:epoch,metrics
  • 暂时暂停训练,然后继续(例如,释放c(g)pu以执行另一个任务(而不是内存))
  • 立即中断训练
  • 使用度量获取每个epoch/batch的更新
  • 设置详细级别:
    • 0-仅完成消息;
    • 1-每个历元的执行状态
    • 2-每个epoch的执行状态和联机度量(如keras默认输出)
  • 轻松构建自己的通知程序和回调

如何使用

在创建notifiertelegrammenu或notifiertelegram实例时设置令牌和代理

链子
fromnotifykerimportNotifierTelegramMenufromnotifyker.chainerimportExtensionNotifierReportTOKEN='xxxx:yyy'PROXY={'proxy_url':'socks5h://ip:port','urllib3_proxy_kwargs':{'username':'username','password':'password'}}# use NotifierTelegram in order to work without keyboard menunfk=NotifierTelegramMenu(TOKEN=TOKEN,PROXY=PROXY)chainer_not=ExtensionNotifierReport(notifier=nfk)...trainer.extend(chainer_not)trainer.run()

路缘石

fromnotifykerimportNotifierTelegramMenufromnotifyker.kerasimportCallbackSimpleTOKEN='xxxx:yyy'PROXY={'proxy_url':'socks5h://ip:port','urllib3_proxy_kwargs':{'username':'username','password':'password'}}# use NotifierTelegram in order to work without keyboard menunfk=NotifierTelegramMenu(TOKEN=TOKEN,PROXY=PROXY)callback=CallbackSimple(notifier=nfk)model.fit(...callbacks=[callback])

如果不需要,则设置proxy=none

开始

向电报机器人输入/start命令。现在它启动了,您将收到更新消息。

菜单

输入/menu打开键盘菜单,并显示以下选项:

  • status-获取上次完成的epoch的状态

  • verbose-更改详细级别或保持不变

0级:

第2级:


  • 暂停-暂停培训过程(使用批处理回调方法上的选项块)

  • 继续-继续暂停的培训过程

  • 中断-停止训练并停止机器人更新

命令

此外,您还可以通过键入以下命令直接使用这些命令:

  • /状态
  • /verbose-仅获取当前的详细级别(todo:opportunity to change)
  • /暂停
  • /继续
  • /中断
  • /帮助-获取命令选项的说明

您自己的通知

导入基类(notifierBase或notifierLegram)

fromnotifykerimportNotifierTelegram

然后使用继承和实现/重新实现方法创建自己的类。注意:如果您添加了一些新命令-请将其添加到handler中

fromtelegram.extimportCommandHandler# if requiredclassMyOwnNotifyker(NotifierTelegram):defmy_own_hello(self,bot,update):"""		Send hello in reply		"""self.updater.reply_text('Hello!')defhandlers(self):super().handlers()self.updater.dispatcher.add_handler(CommandHandler('hello',self.my_own_hello))

就这样!

您自己的回拨

同样,您也可以使用自己的回调。假设你只想知道训练什么时候结束。

importtimefromnotifykerimportCallbackBaseclassMyOwnCallback(CallbackBase):defon_training_end(self):end_time=time.ctime(int(time.time()))self.notifier.message('Training completed {} in {}'.format(tag,end_time))

注册您自己的电报机器人

为了创建您自己的电报机器人-与t.me/botfather交谈-这是官方机器人…创建机器人程序。

另外,您将得到一个bot的标记,它将用于后面的通知程序。单击您的机器人的名称,聊天将与您的机器人打开。

此外,botfather还允许管理bot配置文件图像、说明、隐私选项等。

官方介绍如下:https://core.telegram.org/bots

tf

的通知程序

这可以用于tensorflow,但是应该在tf代码中添加必要的函数。只需创建:

nfk=NotifierTelegramMenu(TOKEN=TOKEN,PROXY=PROXY)

例如,为了实现暂停,在您的epoch之后添加:

if'p'innfk.flags_batch:self.notifier.flags_batch.remove('p')while'c'notinnfk.flags_batchand's'notinnfk.flags_batch:time.sleep(10)

您可以查看callbacknk/callback_simple.py以查找有关实现的更多信息。

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

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素