实验中的TensorFlow
SKIL还支持TensorFlow开箱即用。使用新的Keras API的任何TensorFlow模型都可以导入SKIL的模型服务系统。在尝试一个实验之前,请确保你已首先将TensorFlow模型保存或导入到SKIL工作间。
Example notebook that trains a TensorFlow model in SKIL. image.gif 在SKIL中训练TensorFlow模型的示例笔记本。
使用Python
The Python environment is made possible by the PySpark interpreter in Apache Zeppelin. This interpreter makes most Python features available and also exposes several specific Apache Spark features.
Be sure to read:
Python环境是由apache zeppelin中的pyspark解释器实现的。这个解释器提供了大部分的Python特性,还公开了一些特定的Apache Spark特性。
请务必阅读:
TensorFlow工作间
在实验中设置TensorFlow就像创建一个普通的工作空间和使用笔记本中的%pyspark解释器一样简单。
要确保TensorFlow和Numpy在作用域内可用,请创建一个包含以下内容的单元:
%pyspark
import numpy as np
import tensorflow as tf
image.gif
点击shift+enter对单元进行评估,并将np和tf变量放入作用哉。这些变量现在在解释器评估的所有后续笔记本单元中都可用。
定义模型与典型的Python项目完全相同。要创建具有SoftMax输出和渐变下降优化器的多层感知器,请在新单元中输入以下内容:
%pyspark
learning_rate = 0.01
training_epochs = 25
batch_size = 100
display_step = 1
class MyModel(object):
def __init__(self, n_inputs, n_outputs):
self.x = tf.placeholder(tf.float32, [None, n_inputs], name="input0")
self.y = tf.placeholder(tf.float32, [None, n_outputs])
self.model = tf.layers.dense(self.x, n_inputs / 2, activation=tf.nn.sigmoid)
self.model = tf.layers.dense(self.model, n_outputs)
self.output = tf.nn.softmax(self.model, name="output0")
self.loss = tf.losses.softmax_cross_entropy(onehot_labels=self.y, logits=self.model)
self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
self.train_op = self.optimizer.minimize(loss=self.loss)
model = MyModel(784, 10)
init = tf.global_variables_initializer()
image.gif
在SKIL中训练TensorFlow模型几乎与任何其他Python环境相同。你需要创建一个tf.session()并初始化会话,将检查点保存到本地/tmp文件系统,并在你想要冻结图状态和权重时使用tensorflow.python.tools.freeze_graph()
。
将TensorFlow模型添加到SkilContext
一旦TensorFlow*.pb图被冻结并保存到临时文件系统中,你就可以将其上传到SKIL模型列表中,以便在实验中使用。
要将模型添加到SkilContext,请执行以下操作:
%pyspark
import skil
skilContext = skil.SkilContext(sc)
path = str(skilContext.copyModel(z, "/tmp/tfmodel/model.pb", "mytensorflow"))
image.gif
Add TensorFlow Model to Experiment
Assuming you have named your saved model as mytensorflow
in the SKILContext list and created a reference to its path
, you can then add the model to an experiment by using the SKILContext addModelToExperiment
list.
The following code assumes you are naming your model best_model_experiment
:
将TensorFlow模型添加到实验中
假设你已在SkilContext列表中将保存的模型命名为mytensorflow,并创建了对其路径的引用,则可以使用SkilContext addModelToExperiment列表将模型添加到实验中。
以下代码假定你正在命名你的模型best_model_experiment
:
%pyspark
model_id = skilContext.addModelToExperiment(z, path, "best_model_experiment")
print(model_id)
image.gif
将模型添加到实验后,它将显示在工作区的模型列表中:
image image.gif 样例代码
工作间的端到端训练和模型实验代码可在 SKIL Examples Python Notebooks存储库中找到。
网友评论