我正在尝试使用 TensorFlow 实现神经网络来解决 XOR 问题。我选择 sigmoid 作为激活函数,形状(2, 2, 1)和optimizer=SGD()。我选择这个batch_size=1问题是因为问题的宇宙是 4,所以真的很小。问题是预测与正确答案相差甚远。我究竟做错了什么?
我是在Google Colab上做的,Tensorflow版本是2.3.0。
import tensorflow as tf
import numpy as np
x = np.array([[0, 0],
[1, 1],
[1, 0],
[0, 1]], dtype=np.float32)
y = np.array([[0],
[0],
[1],
[1]], dtype=np.float32)
model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(2,)))
model.add(tf.keras.layers.Dense(2, activation=tf.keras.activations.sigmoid))
model.add(tf.keras.layers.Dense(2, activation=tf.keras.activations.sigmoid))
model.add(tf.keras.layers.Dense(1, activation=tf.keras.activations.sigmoid))
model.compile(optimizer=tf.keras.optimizers.SGD(),
loss=tf.keras.losses.MeanSquaredError(),
metrics=['binary_accuracy'])
history = model.fit(x, y, batch_size=1, epochs=500, verbose=False)
print("Tensorflow version: ", tf.__version__)
predictions = model.predict_on_batch(x)
print(predictions)
Run Code Online (Sandbox Code Playgroud)
输出:
Tensorflow version: 2.3.0
WARNING:tensorflow:10 out of the …Run Code Online (Sandbox Code Playgroud)