print("in some cases there will be some warning in the beginning dont worry about that until execution is completed")
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.losses import BinaryCrossentropy

inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32)
targets = np.array([[0], [1], [1], [0]], dtype=np.float32)

model = Sequential()
model.add(Dense(4, input_dim=2, activation="sigmoid"))
model.add(Dense(1, activation="sigmoid"))
model.compile(optimizer=SGD(learning_rate=0.1),
              loss=BinaryCrossentropy(),
              metrics=['accuracy'])

model.fit(inputs, targets, epochs=500, verbose=0)

predictions = model.predict(inputs)
print("Input → Predicted Output")
for input_val, prediction in zip(inputs, predictions):
    print(f"{input_val} → {prediction[0]:.4f}")
