卷积神经网络两层全连接层tensorflow实现
时间: 2023-09-02 17:08:52 浏览: 72
以下是一个基于TensorFlow的卷积神经网络(CNN)模型,包含两层全连接层:
```python
import tensorflow as tf
# 定义输入和输出
x = tf.placeholder(tf.float32, [None, 784])
y_true = tf.placeholder(tf.float32, [None, 10])
# 定义卷积层
x_image = tf.reshape(x, [-1,28,28,1])
conv1 = tf.layers.conv2d(inputs=x_image, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.relu)
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)
# 定义第一层全连接层
pool1_flat = tf.reshape(pool1, [-1, 14 * 14 * 32])
dense1 = tf.layers.dense(inputs=pool1_flat, units=1024, activation=tf.nn.relu)
dropout1 = tf.layers.dropout(inputs=dense1, rate=0.4)
# 定义第二层全连接层
dense2 = tf.layers.dense(inputs=dropout1, units=10)
y_pred = tf.nn.softmax(dense2)
# 定义损失函数和优化器
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_true, logits=dense2))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# 定义准确率
correct_prediction = tf.equal(tf.argmax(y_pred, 1), tf.argmax(y_true, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
```
该模型包含一个卷积层和两个全连接层。在卷积层中,我们使用 `tf.layers.conv2d()` 函数定义一个卷积层,同时使用 `tf.layers.max_pooling2d()` 函数定义一个最大池化层。在全连接层中,我们使用 `tf.layers.dense()` 函数定义一个全连接层,并使用 `tf.layers.dropout()` 函数定义一个Dropout层来防止过拟合。
在训练过程中,我们使用交叉熵作为损失函数,使用Adam优化器来最小化损失函数。我们还定义了准确率作为评估模型的指标。
阅读全文