Запуск Hard Functional API на TPU

1

Я хотел переписать функцию 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, или есть способ сделать это?

Теги:
tensorflow
keras
deep-learning
google-cloud-tpu

1 ответ

0

Почему вам нужно создать экземпляр тендера 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)
  ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню