Skip to content

Discrepancy in ops.correlate for tensorflow #21617

@wesselvannierop

Description

@wesselvannierop

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.]

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions