In [0]:
try:
  # %tensorflow_version only exists in Colab.
  %tensorflow_version 2.x
except Exception:
  pass

In [0]:
X = [[0, 0], [0, 1], [1, 0], [1, 1]]
y = [0, 1, 1, 0]

In [0]:


In [72]:
# sgd cant do this with 1 node 
import tensorflow as tf
import numpy as np

X = np.array(X)
y = np.array(y)

model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(2, activation='relu'),
])
sgd = tf.keras.optimizers.SGD(learning_rate=0.1)
model.compile(optimizer= sgd,
              
              loss='mean_squared_error',
              metrics=['mean_squared_error'])
model.fit(X, y, epochs=1000, verbose=0)
_, acc = model.evaluate(X, y)
print('acc = ' + str(acc))


4/4 [==============================] - 0s 14ms/sample - loss: 0.2500 - mean_squared_error: 0.2500
acc = 0.25

In [77]:
import tensorflow as tf
import numpy as np

X = np.array(X)
y = np.array(y)

model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(2, activation='tanh', input_shape=(2,)),
  tf.keras.layers.Dense(1, activation='sigmoid'),
])
sgd = tf.keras.optimizers.SGD(learning_rate=0.1)
model.compile(optimizer=sgd,
              loss='binary_crossentropy',
              metrics=['accuracy'])
model.fit(X, y, batch_size = 4, epochs=10000, verbose=0)
_, acc = model.evaluate(X, y)
print(model.predict_proba(X))
print(model.get_weights())

print(model.predict(X,batch_size=4))
print('acc = ' + str(acc))


4/4 [==============================] - 0s 16ms/sample - loss: 0.0034 - accuracy: 1.0000
[[0.00249011]
 [0.99557096]
 [0.9955421 ]
 [0.0021459 ]]
[array([[-3.5277956, -3.8476021],
       [ 3.6643307,  3.7548664]], dtype=float32), array([ 1.6859659, -1.8153247], dtype=float32), array([[-6.2194934],
       [ 6.1956935]], dtype=float32), array([5.6895905], dtype=float32)]
[[0.00249011]
 [0.99557096]
 [0.9955421 ]
 [0.0021459 ]]
acc = 1.0

In [0]:


In [81]:
#adam much better but still 100 
import tensorflow as tf
import numpy as np

X = np.array(X)
y = np.array(y)

model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(2, activation='tanh', input_shape=(2,)),
  tf.keras.layers.Dense(1, activation='sigmoid'),
])
sgd = tf.keras.optimizers.Adam(learning_rate=0.1)
model.compile(optimizer=sgd,
              loss='binary_crossentropy',
              metrics=['accuracy'])
model.fit(X, y, batch_size = 4, epochs=100, verbose=1)
_, acc = model.evaluate(X, y)
print(model.predict_proba(X))
print(model.get_weights())

print(model.predict(X,batch_size=4))
print('acc = ' + str(acc))


Train on 4 samples
Epoch 1/100
4/4 [==============================] - 0s 64ms/sample - loss: 0.7732 - accuracy: 0.5000
Epoch 2/100
4/4 [==============================] - 0s 891us/sample - loss: 0.7225 - accuracy: 0.2500
Epoch 3/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.7095 - accuracy: 0.7500
Epoch 4/100
4/4 [==============================] - 0s 610us/sample - loss: 0.7138 - accuracy: 0.5000
Epoch 5/100
4/4 [==============================] - 0s 720us/sample - loss: 0.7129 - accuracy: 0.5000
Epoch 6/100
4/4 [==============================] - 0s 748us/sample - loss: 0.7062 - accuracy: 0.5000
Epoch 7/100
4/4 [==============================] - 0s 663us/sample - loss: 0.6995 - accuracy: 0.5000
Epoch 8/100
4/4 [==============================] - 0s 615us/sample - loss: 0.6959 - accuracy: 0.5000
Epoch 9/100
4/4 [==============================] - 0s 691us/sample - loss: 0.6954 - accuracy: 0.7500
Epoch 10/100
4/4 [==============================] - 0s 685us/sample - loss: 0.6962 - accuracy: 0.2500
Epoch 11/100
4/4 [==============================] - 0s 705us/sample - loss: 0.6967 - accuracy: 0.2500
Epoch 12/100
4/4 [==============================] - 0s 751us/sample - loss: 0.6965 - accuracy: 0.5000
Epoch 13/100
4/4 [==============================] - 0s 764us/sample - loss: 0.6958 - accuracy: 0.5000
Epoch 14/100
4/4 [==============================] - 0s 799us/sample - loss: 0.6953 - accuracy: 0.5000
Epoch 15/100
4/4 [==============================] - 0s 701us/sample - loss: 0.6948 - accuracy: 0.5000
Epoch 16/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.6941 - accuracy: 0.5000
Epoch 17/100
4/4 [==============================] - 0s 922us/sample - loss: 0.6929 - accuracy: 0.5000
Epoch 18/100
4/4 [==============================] - 0s 894us/sample - loss: 0.6910 - accuracy: 0.5000
Epoch 19/100
4/4 [==============================] - 0s 708us/sample - loss: 0.6882 - accuracy: 0.5000
Epoch 20/100
4/4 [==============================] - 0s 643us/sample - loss: 0.6845 - accuracy: 0.7500
Epoch 21/100
4/4 [==============================] - 0s 996us/sample - loss: 0.6800 - accuracy: 0.7500
Epoch 22/100
4/4 [==============================] - 0s 847us/sample - loss: 0.6749 - accuracy: 0.7500
Epoch 23/100
4/4 [==============================] - 0s 790us/sample - loss: 0.6694 - accuracy: 0.7500
Epoch 24/100
4/4 [==============================] - 0s 638us/sample - loss: 0.6635 - accuracy: 0.7500
Epoch 25/100
4/4 [==============================] - 0s 643us/sample - loss: 0.6563 - accuracy: 0.7500
Epoch 26/100
4/4 [==============================] - 0s 859us/sample - loss: 0.6471 - accuracy: 0.7500
Epoch 27/100
4/4 [==============================] - 0s 740us/sample - loss: 0.6358 - accuracy: 0.7500
Epoch 28/100
4/4 [==============================] - 0s 666us/sample - loss: 0.6228 - accuracy: 0.7500
Epoch 29/100
4/4 [==============================] - 0s 874us/sample - loss: 0.6085 - accuracy: 0.7500
Epoch 30/100
4/4 [==============================] - 0s 696us/sample - loss: 0.5935 - accuracy: 0.7500
Epoch 31/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.5787 - accuracy: 0.7500
Epoch 32/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.5646 - accuracy: 0.7500
Epoch 33/100
4/4 [==============================] - 0s 757us/sample - loss: 0.5515 - accuracy: 0.7500
Epoch 34/100
4/4 [==============================] - 0s 727us/sample - loss: 0.5396 - accuracy: 0.7500
Epoch 35/100
4/4 [==============================] - 0s 707us/sample - loss: 0.5286 - accuracy: 0.7500
Epoch 36/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.5184 - accuracy: 0.7500
Epoch 37/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.5088 - accuracy: 0.7500
Epoch 38/100
4/4 [==============================] - 0s 965us/sample - loss: 0.4998 - accuracy: 0.7500
Epoch 39/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4913 - accuracy: 0.7500
Epoch 40/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4833 - accuracy: 0.7500
Epoch 41/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4756 - accuracy: 0.7500
Epoch 42/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4681 - accuracy: 0.7500
Epoch 43/100
4/4 [==============================] - 0s 3ms/sample - loss: 0.4605 - accuracy: 0.7500
Epoch 44/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4525 - accuracy: 0.7500
Epoch 45/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4439 - accuracy: 0.7500
Epoch 46/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4342 - accuracy: 0.7500
Epoch 47/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4234 - accuracy: 0.7500
Epoch 48/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.4114 - accuracy: 0.7500
Epoch 49/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.3981 - accuracy: 0.7500
Epoch 50/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.3835 - accuracy: 0.7500
Epoch 51/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.3671 - accuracy: 0.7500
Epoch 52/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.3488 - accuracy: 0.7500
Epoch 53/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.3287 - accuracy: 0.7500
Epoch 54/100
4/4 [==============================] - 0s 2ms/sample - loss: 0.3074 - accuracy: 1.0000
Epoch 55/100
4/4 [==============================] - 0s 2ms/sample - loss: 0.2857 - accuracy: 1.0000
Epoch 56/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.2637 - accuracy: 1.0000
Epoch 57/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.2420 - accuracy: 1.0000
Epoch 58/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.2211 - accuracy: 1.0000
Epoch 59/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.2016 - accuracy: 1.0000
Epoch 60/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1835 - accuracy: 1.0000
Epoch 61/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1667 - accuracy: 1.0000
Epoch 62/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1513 - accuracy: 1.0000
Epoch 63/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1373 - accuracy: 1.0000
Epoch 64/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1247 - accuracy: 1.0000
Epoch 65/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1133 - accuracy: 1.0000
Epoch 66/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.1029 - accuracy: 1.0000
Epoch 67/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0934 - accuracy: 1.0000
Epoch 68/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0849 - accuracy: 1.0000
Epoch 69/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0773 - accuracy: 1.0000
Epoch 70/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0704 - accuracy: 1.0000
Epoch 71/100
4/4 [==============================] - 0s 854us/sample - loss: 0.0641 - accuracy: 1.0000
Epoch 72/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0586 - accuracy: 1.0000
Epoch 73/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0536 - accuracy: 1.0000
Epoch 74/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0492 - accuracy: 1.0000
Epoch 75/100
4/4 [==============================] - 0s 2ms/sample - loss: 0.0453 - accuracy: 1.0000
Epoch 76/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0418 - accuracy: 1.0000
Epoch 77/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0387 - accuracy: 1.0000
Epoch 78/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0360 - accuracy: 1.0000
Epoch 79/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0336 - accuracy: 1.0000
Epoch 80/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0314 - accuracy: 1.0000
Epoch 81/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0295 - accuracy: 1.0000
Epoch 82/100
4/4 [==============================] - 0s 2ms/sample - loss: 0.0278 - accuracy: 1.0000
Epoch 83/100
4/4 [==============================] - 0s 882us/sample - loss: 0.0263 - accuracy: 1.0000
Epoch 84/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0249 - accuracy: 1.0000
Epoch 85/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0237 - accuracy: 1.0000
Epoch 86/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0226 - accuracy: 1.0000
Epoch 87/100
4/4 [==============================] - 0s 843us/sample - loss: 0.0216 - accuracy: 1.0000
Epoch 88/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0206 - accuracy: 1.0000
Epoch 89/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0198 - accuracy: 1.0000
Epoch 90/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0190 - accuracy: 1.0000
Epoch 91/100
4/4 [==============================] - 0s 2ms/sample - loss: 0.0183 - accuracy: 1.0000
Epoch 92/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0177 - accuracy: 1.0000
Epoch 93/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0170 - accuracy: 1.0000
Epoch 94/100
4/4 [==============================] - 0s 2ms/sample - loss: 0.0165 - accuracy: 1.0000
Epoch 95/100
4/4 [==============================] - 0s 836us/sample - loss: 0.0160 - accuracy: 1.0000
Epoch 96/100
4/4 [==============================] - 0s 865us/sample - loss: 0.0155 - accuracy: 1.0000
Epoch 97/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0150 - accuracy: 1.0000
Epoch 98/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0146 - accuracy: 1.0000
Epoch 99/100
4/4 [==============================] - 0s 949us/sample - loss: 0.0142 - accuracy: 1.0000
Epoch 100/100
4/4 [==============================] - 0s 1ms/sample - loss: 0.0138 - accuracy: 1.0000
4/4 [==============================] - 0s 16ms/sample - loss: 0.0135 - accuracy: 1.0000
[[0.01514867]
 [0.9915662 ]
 [0.9918065 ]
 [0.02168923]]
[array([[ 5.0804253, -2.5047328],
       [ 4.9474506, -2.5054274]], dtype=float32), array([-2.727905 ,  3.5388799], dtype=float32), array([[5.131387 ],
       [5.1911755]], dtype=float32), array([-4.2692637], dtype=float32)]
[[0.01514867]
 [0.9915662 ]
 [0.9918065 ]
 [0.02168923]]
acc = 1.0

In [0]: