Режим ожидания: использование последовательностей в 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())
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