簡體   English   中英

Colab+Keras+TensorBoard FailedPreconditionError

[英]Colab+Keras+TensorBoard FailedPreconditionError

我正在嘗試運行一個簡單的 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 的一種非常有用的方法。

這是由 Keras 版本沖突引起的。 在您導入Keras API 的tf.keras實現時, Tensorboardcolab使用完整的keras 庫 因此,當您擬合模型時,您最終會使用兩個不同版本的 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 版本的 Adam 優化器,因此您不再需要顯式導入 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

您也可以在我進行這些更改的地方使用這個 fork

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM