gpt4 book ai didi

machine-learning - Tensorflow 2 异或实现

转载 作者:行者123 更新时间:2023-11-30 10:00:25 24 4
gpt4 key购买 nike

我是 tensorflow 新手,首先我想训练 XOR 模型,给出具有 2 个值的 4 个输入,并学习具有 1 个值的 4 个输出。这是我在 TF 2 中所做的事情

    model = keras.Sequential([
keras.layers.Input(shape=(2,)),
keras.layers.Dense(units=2, activation='relu'),
keras.layers.Dense(units=1, activation='softmax')
])

model.compile(optimizer='adam',
loss=tf.losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])

history = model.fit(
(tf.cast([[0,0],[0,1],[1,0],[1,1]], tf.float32), tf.cast([0,1,1,0], tf.float32)),
epochs=4,
steps_per_epoch=1,
validation_data=(tf.cast([[0.7, 0.7]], tf.float32), tf.cast([0], tf.float32)),
validation_steps=1
)

以上代码给出错误IndexError:列表索引超出范围

请帮我解决这个问题,我想了解如何为模型提供形状。

最佳答案

您在拟合函数中分配参数时遇到问题:

history = model.fit(
(tf.cast([[0,0],[0,1],[1,0],[1,1]], tf.float32), tf.cast([0,1,1,0], tf.float32)),
epochs=4,
steps_per_epoch=1,
validation_data=(tf.cast([[0.7, 0.7]], tf.float32), tf.cast([0], tf.float32)),
validation_steps=1)

尝试用以下内容替换该行:

x_train = tf.cast([[0,0],[0,1],[1,0],[1,1]], tf.float32)
y_train = tf.cast([0,1,1,0], tf.float32)
x_test = tf.cast([[0.7, 0.7]], tf.float32)
y_test = tf.cast([0], tf.float32)
history = model.fit(
x=x_train, y=y_train,
epochs=4,
steps_per_epoch=1,
validation_data=(x_test, y_test),
validation_steps=1
)

您的问题应该得到解决。

PS:只是一个建议,当你进行二元分类时,尝试使用 sigmoid 而不是 softmax,并分别使用 BinaryCrossentropy 损失而不是 CategoricalCrossentropy。祝你好运

关于machine-learning - Tensorflow 2 异或实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59243005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com