-
Notifications
You must be signed in to change notification settings - Fork 19.6k
Open
Labels
Description
For the tensorflow backend, keras.ops.correlate
does not match numpy outputs in mode='same' and mode='full'. The other backends and mode='valid' work fine.
import os
os.environ["KERAS_BACKEND"] = "tensorflow"
import numpy as np
from keras import ops
x = np.array([1, 3, 5])
y = np.array([7, 9])
mode = "full"
print("Mode: ", mode)
print("numpy: ", np.correlate(x, y, mode=mode))
print("tensorflow: ", ops.convert_to_numpy(ops.correlate(x, y, mode=mode)))
mode = "same"
print("Mode: ", mode)
print("numpy: ", np.correlate(x, y, mode=mode))
print("tensorflow: ", ops.convert_to_numpy(ops.correlate(x, y, mode=mode)))
mode = "valid"
print("Mode: ", mode)
print("numpy: ", np.correlate(x, y, mode=mode))
print("tensorflow: ", ops.convert_to_numpy(ops.correlate(x, y, mode=mode)))
Mode: full
numpy: [ 9 34 66 35]
tensorflow: [34. 66. 35. 0.]
Mode: same
numpy: [ 9 34 66]
tensorflow: [34. 66. 35.]
Mode: valid
numpy: [34 66]
tensorflow: [34. 66.]
tristan-deep