keras/integration_tests/torch_backend_keras_workflow.py
Haifeng Jin ea23c1829b temporary implementation for compute_output_spec (#186)
Co-authored-by: Haifeng Jin <haifeng-jin@users.noreply.github.com>
2023-06-05 16:49:21 -07:00

90 lines
2.2 KiB
Python

import numpy as np
import keras_core
from keras_core import layers
from keras_core import operations as ops
keras_core.utils.set_random_seed(1337)
x = np.random.rand(100, 32, 32, 3)
y = np.random.randint(0, 2, size=(100, 1))
# Test sequential model.
model = keras_core.Sequential(
[
layers.Conv2D(filters=10, kernel_size=3),
layers.GlobalAveragePooling2D(),
layers.Dense(1, activation="sigmoid"),
]
)
model.compile(
loss="binary_crossentropy", optimizer="adam", metrics=["mae", "accuracy"]
)
history = model.fit(
x=x,
y=y,
epochs=10,
validation_data=(x, y),
verbose=0,
)
model.evaluate(x, y, verbose=0)
model.predict(x, verbose=0)
# Test functional model.
inputs = keras_core.Input(shape=(32, 32, 3))
outputs = layers.Conv2D(filters=10, kernel_size=3)(inputs)
outputs = layers.GlobalAveragePooling2D()(outputs)
outputs = layers.Dense(1)(outputs)
model = keras_core.Model(inputs, outputs)
model.compile(
loss="binary_crossentropy", optimizer="adam", metrics=["mae", "accuracy"]
)
history = model.fit(
x=x,
y=y,
epochs=10,
validation_data=(x, y),
verbose=0,
)
model.evaluate(x, y, verbose=0)
model.predict(x, verbose=0)
# Test custom layer
class Linear(layers.Layer):
def __init__(self, units=32):
super().__init__()
self.units = units
def build(self, input_shape):
self.w = self.add_weight(
shape=(input_shape[-1], self.units),
initializer="random_normal",
trainable=True,
)
self.b = self.add_weight(
shape=(self.units,), initializer="random_normal", trainable=True
)
def call(self, inputs):
return ops.matmul(inputs, self.w) + self.b
inputs = keras_core.Input(shape=(32, 32, 3))
outputs = layers.Conv2D(filters=10, kernel_size=3)(inputs)
outputs = layers.GlobalAveragePooling2D()(outputs)
outputs = Linear(1)(outputs)
outputs = layers.Activation("sigmoid")(outputs)
model = keras_core.Model(inputs, outputs)
model.compile(
loss="binary_crossentropy", optimizer="adam", metrics=["mae", "accuracy"]
)
history = model.fit(
x=x,
y=y,
epochs=10,
validation_data=(x, y),
verbose=0,
)
model.evaluate(x, y, verbose=0)
model.predict(x, verbose=0)