|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
以下回复您看是否对您有帮助
1. 缺少导入`input_data`模块,应该添加`from tensorflow.examples.tutorials.mnist import input_data`。
2. 在定义网络结构时,`output_size`应该为10,而不是1。
3. 在定义损失函数时,应该使用`tf.nn.softmax_cross_entropy_with_logits`函数,而不是`tf.nn.sparse_softmax_cross_entropy_with_logits`函数。
4. 在训练模型时,应该使用`mnist.train.next_batch`方法获取批量数据。
5. 在验证模型和测试模型时,应该使用`mnist.validation.images`和`mnist.test.images`作为输入数据。
修改后的代码如下所示:
```python
import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 定义网络结构
input_size = 784
hidden_size = 256
output_size = 10
x = tf.placeholder(tf.float32, [None, input_size])
y = tf.placeholder(tf.float32, [None, output_size])
W1 = tf.Variable(tf.random_normal([input_size, hidden_size]))
b1 = tf.Variable(tf.random_normal([hidden_size]))
W2 = tf.Variable(tf.random_normal([hidden_size, output_size]))
b2 = tf.Variable(tf.random_normal([output_size]))
# 定义前向传播和损失函数
hidden_layer = tf.nn.relu(tf.matmul(x, W1) + b1)
output_layer = 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(learning_rate=0.01)
train_step = optimizer.minimize(loss)
# 加载数据
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
# 训练模型
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y: batch_ys})
# 验证模型
correct_prediction = tf.equal(tf.argmax(output_layer, axis=1), tf.argmax(y, axis=1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.validation.images, y: mnist.validation.labels}))
# 测试模型
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels}))
``` |
|