美文网首页程序员每天进步一点点
2020-05-13【TF2时间序列建模过程+Kubernete

2020-05-13【TF2时间序列建模过程+Kubernete

作者: 桢桢claire | 来源:发表于2020-05-13 22:34 被阅读0次
海上日出

今日鸡汤:

卡夫卡说:
“信仰是什么?
相信一切事和一切时刻的合理的内在联系,
相信生活作为整体将永远继续下去,
相信最近的东西和最远的东西。”

一个人相信什么,他未来的人生就会靠近什么。与你共勉。

Eat TensorFlow 2.0 in 30 days (1-4)

今天学了使用时间序列数据,用函数式API定义4层LSTM网络做预测问题,同样,还是按照Tensorflow的一般流程总结一下:

准备数据

  1. 用Pandas导入数据: pd.read_csv()
  2. 用Pandas查看总体数据趋势:df.plot(),会按照每一列绘制一条曲线。
  3. 对于时间序列数据,查看差分情况,可以用diff函数将数据进行某种移动之后与原数据进行比较得出差异数据:dfdata.diff(periods=1)
  4. 对数据分batch: dataset.batch()

定义模型

使用函数式API构建模型:

tf.keras.backend.clear_session()

x_input = layers.Input(shape = (None,3),dtype = tf.float32)
x = layers.LSTM(3,return_sequences = True,input_shape=(None,3))(x_input)
x = layers.LSTM(3,return_sequences = True,input_shape=(None,3))(x)
x = layers.LSTM(3,return_sequences = True,input_shape=(None,3))(x)
x = layers.LSTM(3,input_shape=(None,3))(x)
x = layers.Dense(3)(x)

x = Block()(x_input,x)
model = models.Model(inputs = [x_input],outputs = [x])
model.summary()

训练模型

采用fit方法。使用Adam优化器,用MSPE做loss:

optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)
model.compile(optimizer=optimizer,loss=MSPE(name = "MSPE"))

对于RNN设置多个学习率进行尝试,监控loss指标,并使用Keras 提供的多种回调函数调整训练状态:
1)ReduceLROnPlateau:当指标停止提升时,降低学习速率。一旦学习停止,模型通常会将学习率降低2-10倍。该回调监测数量,如果没有看到epoch的 'patience' 数量的改善,那么学习率就会降低。
2)EarlyStopping:当监测数量停止改善时停止训练。

tb_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
#如果loss在100个epoch后没有提升,学习率减半。
lr_callback = tf.keras.callbacks.ReduceLROnPlateau(monitor="loss",factor = 0.5, patience = 100)
#当loss在200个epoch后没有提升,则提前终止训练。
stop_callback = tf.keras.callbacks.EarlyStopping(monitor = "loss", patience= 200)
callbacks_list = [tb_callback,lr_callback,stop_callback]

history = model.fit(ds_train,epochs=500,callbacks = callbacks_list)

评估模型

使用plt.plot(epochs, train_metrics)方法可视化模型loss随Epoch的变化。

使用模型

该任务为预测任务,先用一个循环生成未来100天的数据,之后做query。

model.predict(tf.constant(tf.expand_dims(dfresult.values[-38:,:],axis = 0)))

保存模型

使用tf原生方式保存模型,同样,设置save_format为tf即可:

model.save('./data/tf_model_savedmodel', save_format="tf")

Kubernetes 权威指南

Kubernetes是什么?
一个基于容器技术的分布式架构方案,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率最大化。

  • 它是一个开放的平台,用任何语言实现的服务都可以映射为Kubernetes的Service,并通过标准的TCP通信协议进行交互
  • 它是一个完备的分布式系统开发和支撑平台,具备完备的集群管理能力,提供完善的管理工具。

Pod是什么?
Pod=1个Pause容器+一堆用户业务容器

  • Pod IP:每个Pod都有唯一的IP地址(Pod IP),一个Pod中多个容器共享该IP。
  • Container Port:在Pod里包含的容器组定义在spec中,包含containerPort。
  • Endpoint:Pod IP + Container Port组成EndPoint,代表此Pod中的一个服务进程的对外通信地址。该地址会随Pod的销毁和重新创建而发生变化。

Replication Controller是什么?
RC声明期待系统中某种Pod的副本数量在任意时刻都符合该预期值,定义包括:

  • Pod期待的副本数量(replicas)
  • 筛选目标Pod的Label Selector (selector)
  • 创建新Pod的模板 (template)

Deployment是什么?
Deployment其实跟RC差不多,只不过能看到当前Pod部署的进度。

Service是什么?

Service

Service其实就是微服务,定义了一个服务的访问入口地址,前端应用通过该入口地址通过Label Selector访问背后的Pod组成的集群实例。

它的特征有:

  • 拥有唯一指定的名称
  • 拥有一个虚拟IP(Cluster IP)和端口号,在Service整个生命周期中,Cluster IP不会改变。
  • 能够提供某种远程服务能力
  • 被映射到提供这种服务能力的一组容器应用上

Service与Pod怎么关联?
Kubernetes首先给每个Pod贴上一个Label,然后给相应的Service定义标签选择器(Label Selector),这样这个service会作用于所有包含该Label的Pod上。

Kubernetes怎么管理集群?
Kubernetes集群=1个Master+一堆Node

  • Master:运行集群管理相关进程(kube-apiserver、 kube-controller-manager、kube-scheduler)
  • Node:工作节点,运行服务进程(kubelet、kube-proxy、Docker Engine)

Kubernetes的服务发现机制?
对Service来说,每个service都有单独的Cluster IP和唯一的名称,固定在配置中,因此只需要根据Service名称找到对应的Cluster IP,Kubernetes引入DNS系统,将服务名作为DNS域名解决服务发现问题。

如何在集群外面访问Service?
在service定义中指定NodePort,K8S中的每个Node都会开启一个对应的TCP监听端口。
也可以在servcie定义中制定LoadBalancer,K8S会自动创建一个LoadBalancer实例并返回IP供外部客户端使用。

相关文章

  • 2020-05-13【TF2时间序列建模过程+Kubernete

    今日鸡汤: 卡夫卡说:“信仰是什么?相信一切事和一切时刻的合理的内在联系,相信生活作为整体将永远继续下去,相信最近...

  • 2019-05-09 计量课

    1. 时间序列建模过程 单位根检验:检验时间序列数据的平稳性。如果对非平稳数据进行回归,会产生伪回归结果。比如猪和...

  • 时间序列建模分析

    时序数据的特点:1.时间序列数据依赖于时间,但不一定是时间的严格函数。2.时间序列数据每时刻上的值具有一定的随机性...

  • 时间序列-建模步骤

    建立时间序列模型通常包括三个步骤: 模型的识别 模型参数的估计 模型的诊断与检验 一、模型的识别 ARMA过程的...

  • 时间序列|建模步骤

    建立时间序列模型通常包括三个步骤: 模型的识别 模型参数的估计 模型的诊断与检验 一、模型的识别ARMA过程的自相...

  • TF2 Keras (1): 用序列(Sequence )创建模

    本文是对官方文档[https://www.tensorflow.org/guide/keras/sequentia...

  • 因素分解及 Prophet 工具使用

    ARMA 和 ARIMA是 对平稳和非平稳时间序列建模方法,另外Facebook有开源的时间序列 prophet。...

  • 8.3专家建模法

    8.3.1时间序列预测步骤 1.绘制时间序列图观察趋势 2.分析序列平稳性并进行平稳化 3.时间序列建模分析 4....

  • (19)时间序列分析

    一)时间序列分析简介 二)季节分解法 三)专家建模法 一、时间序列分析简介 时间序列就是按时间顺序排列的一组数据序...

  • 时间序列分析

    本文的主题是关于时间序列建立ARIMA模型的相关理论解释以及运用Python进行实际建模的详细过程。 1.自回归模...

网友评论

    本文标题:2020-05-13【TF2时间序列建模过程+Kubernete

    本文链接:https://www.haomeiwen.com/subject/hkmnnhtx.html