【问题标题】:Colab+Keras+TensorBoard FailedPreconditionErrorColab+Keras+TensorBoard FailedPreconditionError
【发布时间】:2019-02-07 21:23:49
【问题描述】:

我正在尝试运行一个简单的 Keras 脚本并将 Google Colab 与 TensorBoard 结合使用。这是我的代码:

import tensorflow as tf
import tensorflow.keras as keras
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.applications.mobilenet import MobileNet
from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback

# Settings
num_classes = 10
batch_size = 16
epochs = 1

# Data setup
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

# Select model
model = MobileNet(weights=None, input_shape=x_train.shape[1:], classes=num_classes)

# Select loss, optimizer, metric
model.compile(loss='categorical_crossentropy',
                            optimizer=tf.train.AdamOptimizer(0.001),
                            metrics=['accuracy'])    
# Train
tbc=TensorBoardColab()
model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test), 
                    callbacks=[TensorBoardColabCallback(tbc)])

这是我看到的将 TensorBoard 与 Colab 一起使用的建议,如下所示:Can I use Tensorboard with Google Colab?

但是,当添加回调时,我得到了错误:

FailedPreconditionError: 读取资源变量时出错 来自容器的 conv_dw_8_2/depthwise_kernel:localhost。这可以 表示变量未初始化。未找到:资源 localhost/conv_dw_8_2/depthwise_kernel/N10tensorflow3VarE 没有 存在。 [[节点:conv_dw_8_2/depthwise/ReadVariableOp = ReadVariableOpdtype=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"]] [[节点:loss_2/mul/_147 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_6752_loss_2/mul", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

有人知道我做错了什么吗?如果我能让它工作的话,这似乎是在 Colab 上运行 TensorBoard 的一种非常有用的方法。

【问题讨论】:

    标签: python-3.x keras tensorboard google-colaboratory


    【解决方案1】:

    这是由 Keras 的版本冲突引起的。 Tensorboardcolab 在您导入 Keras API 的 tf.keras 实现时使用完整的 keras library。因此,当您拟合模型时,您最终会使用两种不同版本的 keras。

    你有几个选择:

    使用 Keras 库并更改您的导入

    import tensorflow as tf
    import keras
    from keras.datasets import cifar10
    from keras.applications.mobilenet import MobileNet
    from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback
    

    虽然这些更改后代码运行良好,但您可以考虑使用Keras's version of the Adam optimizer,这样您就不需要再显式导入 tensorflow。

    model.compile(loss='categorical_crossentropy', 
                        optimizer=keras.optimizers.Adam(lr=0.001), 
                        metrics=['accuracy'])`
    

    使用 tf.keras 并修补 TensorBoardColab

    如果您修补 callbacks.pycore.py 并修复那里的导入,您的代码运行良好:

    from keras.callbacks import TensorBoard from tensorflow.keras.callbacks import TensorBoard

    您也可以使用this fork 我进行这些更改。

    【讨论】:

    • 谢谢你,Salomon Tetelepta!你做得很好!
    猜你喜欢
    • 2019-05-26
    • 2021-11-04
    • 2020-05-08
    • 2017-12-18
    • 2020-06-12
    • 2021-01-29
    • 2019-04-20
    • 2020-06-29
    • 1970-01-01
    相关资源
    最近更新 更多