Mah*_*iya 7 keras tensorflow google-colaboratory google-cloud-tpu
我正在尝试使用简单的猫与狗数据集在Google Colab上新添加的TPU支持.
创建简单的CNN后,我尝试将模型导出到TPU.但它失败了,错误
TypeError: Checkpointable._track_checkpointable() passed type <class 'keras.engine.topology.InputLayer'>, not a Checkpointable.
Run Code Online (Sandbox Code Playgroud)
这是我在Colab上编写的代码.
model = models.Sequential()
model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Flatten())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.summary()
train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(train_dir, target_size=(150,150), batch_size=20, class_mode='binary')
tpu_model = tf.contrib.tpu.keras_to_tpu_model(model, strategy=tf.contrib.tpu.TPUDistributionStrategy(tf.contrib.cluster_resolver.TPUClusterResolver(tpu="grpc://" + os.environ['COLAB_TPU_ADDR'])))
Run Code Online (Sandbox Code Playgroud)
我的猜测是我做错了train_generator
.但我不确定它是什么.任何帮助将受到高度赞赏.
如果你正在使用或进口layers
的Keras
,而不是TensorFlow
像这样:
from keras import layers,models
from keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)
你会得到如上所述的错误:
TypeError: Checkpointable._track_checkpointable() passed type <class 'keras.engine.topology.InputLayer'>, not a Checkpointable.
Run Code Online (Sandbox Code Playgroud)
所以,您可以layers
直接从TensorFlow
我的代码中导入:
from tensorflow.keras import layers,models
from keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
Run Code Online (Sandbox Code Playgroud)
或者你可以在这里看到我的完整代码:https: //gist.github.com/ilmimris/8218e397dd35ab693404e95db32dc574