mlp tensorflow代码实现
时间: 2023-10-16 11:06:15 浏览: 74
mlp_py_MLP_python_多层感知机_
好的,以下是一个简单的 MLP(多层感知机)的 TensorFlow 代码实现:
```python
import tensorflow as tf
# 定义输入和输出的维度
input_dim = 784
output_dim = 10
# 定义隐藏层的维度
hidden_dim = 256
# 定义输入和输出的占位符
x = tf.placeholder(tf.float32, [None, input_dim])
y = tf.placeholder(tf.float32, [None, output_dim])
# 定义权重和偏置变量
W1 = tf.Variable(tf.random_normal([input_dim, hidden_dim]))
b1 = tf.Variable(tf.random_normal([hidden_dim]))
W2 = tf.Variable(tf.random_normal([hidden_dim, output_dim]))
b2 = tf.Variable(tf.random_normal([output_dim]))
# 定义模型
hidden_layer = tf.nn.relu(tf.add(tf.matmul(x, W1), b1))
output_layer = tf.add(tf.matmul(hidden_layer, W2), b2)
# 定义损失函数和优化器
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=output_layer, labels=y))
optimizer = tf.train.AdamOptimizer().minimize(loss)
# 定义准确率
correct_prediction = tf.equal(tf.argmax(output_layer, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# 训练模型
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(1000):
batch_x, batch_y = mnist.train.next_batch(100)
sess.run(optimizer, feed_dict={x: batch_x, y: batch_y})
if i % 100 == 0:
acc = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels})
print("Step:", i, "Accuracy:", acc)
```
这是一个简单的 MLP 模型,包含一个隐藏层和一个输出层。其中,输入层的维度为 784,输出层的维度为 10,隐藏层的维度为 256。模型使用 ReLU 激活函数,并使用交叉熵损失函数和 Adam 优化器进行训练。
阅读全文