Я хотел переписать функцию create_model в Keras Functional API. Запуск его на TPU, хотя, когда я переводил его, он дает мне ошибку об использовании Placeholder в функции create_method. В исходном примере автор не помещал явный Placeholder в функцию create_method. Я использую функцию ввода Keras, так как мне нужно создать тензор Keras, чтобы начать работу, очевидно, что это владелец места. Есть ли способ избавиться от Placeholder внутри моей функции create_method?
Вот мой фрагмент моего кода:
def create_model(data_format):
if data_format == 'channels_first':
input_shape = [1, 28, 28]
else:
assert data_format == 'channels_last'
input_shape = [28, 28, 1]
l = tf.keras.layers
m = tf.keras.models
b = tf.keras.backend
v = tf.contrib.layers
# The model consists of a sequential chain of layers, so tf.keras.Sequential
# (a subclass of tf.keras.Model) makes for a compact description.
input = l.Input(shape=(28, 28, 1))
visible = l.Reshape(target_shape=input_shape, input_shape=(28*28,))(input)
Когда я создаю его из предоставленного кода MNIST TPU, я получаю ошибку
заполнитель за пределами подачи
Но я также не могу запустить его без Placeholder, как в Sequential Code, или есть способ сделать это?
Почему вам нужно создать экземпляр тендера Keras с помощью заполнителя? Если вам просто нужна модель для использования в Keras, вы можете использовать следующий фрагмент кода:
NUM_CLASSES = 10
def mnist_model(input_shape):
"""Creates a MNIST model."""
model = tf.keras.models.Sequential()
model.add(
tf.keras.layers.Conv2D(
32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Dropout(0.25))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(NUM_CLASSES, activation='softmax'))
return model
def main():
...
input_shape = (28, 28, 1)
model = mnist_model(input_shape)
...