Нетерпеливый режим: использование последовательностей в tf.keras.Model

Я перехожу с Pytorch на TensorFlow 1.12 и хотел бы знать, можно ли определить классы tf.keras.Sequential в tf.keras.Model и запускать их в активном режиме.

Я построил этот минимальный нерабочий пример и был бы признателен, если бы кто-нибудь мог посоветовать, где я ошибаюсь. Я также использовал классы tf.contrib.eager.Network (с большим успехом), однако, поскольку они объявлены устаревшими, я старался их избегать.

import numpy as np
import tensorflow as tf
import tensorflow.contrib.eager as tfe
from keras.models import Sequential
from keras.layers import Dense, Activation
from tensorflow.train import AdamOptimizer

tf.enable_eager_execution()

class MLP(tf.keras.Model):
    def __init__(self, in_dim, out_dim, hidden_dim, num_layers, activation):
        super(MLP, self).__init__()
        model = Sequential()
        in_features = in_dim
        for layer in range(num_layers):
            model.add(Dense(hidden_dim,))
            model.add(Activation(activation))
            in_features = hidden_dim
        model.add(Dense(out_dim, input_shape=(hidden_dim,)))
        self.model = model

    def call(self, inputs):
        return self.model(inputs)

model = MLP(10, 1, 20, 4, 'relu')

optim = AdamOptimizer(learning_rate=1e-4)

for v in model.variables:
    print(v)

z = tf.convert_to_tensor(np.random.randn(100, 10), dtype=tf.float32)
with tfe.GradientTape() as tape:
    tape.watch(z)
    u = model(z)
    loss = tf.reduce_mean(tf.abs(u))
grad = tape.gradient(loss, model.trainable_variables)
optim.apply_gradients(zip(grad, model.trainable_variables))
print(loss.numpy())

person Carl    schedule 25.05.2019    source источник


Ответы (1)


Используйте from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Activation вместо: from keras.models import Sequential from keras.layers import Dense, Activation

person Carl    schedule 26.05.2019