python中建立CNN网络2个卷积层两个连接层使用reludropoutsoftmax层
以下是一个简单的例子:
import tensorflow as tf
# 定义输入和输出
x = tf.placeholder(tf.float32, shape=[None, 28, 28, 1])
y_true = tf.placeholder(tf.float32, shape=[None, 10])
# 定义第一个卷积层
conv1 = tf.layers.conv2d(inputs=x, filters=32, kernel_size=[5, 5], activation=tf.nn.relu)
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)
# 定义第二个卷积层
conv2 = tf.layers.conv2d(inputs=pool1, filters=64, kernel_size=[5, 5], activation=tf.nn.relu)
pool2 = tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2)
# 将卷积层输出展平
flat = tf.reshape(pool2, [-1, 7 * 7 * 64])
# 定义第一个全连接层
fc1 = tf.layers.dense(inputs=flat, units=1024, activation=tf.nn.relu)
dropout1 = tf.layers.dropout(inputs=fc1, rate=0.4)
# 定义第二个全连接层
fc2 = tf.layers.dense(inputs=dropout1, units=10)
# 定义softmax层
y_pred = tf.nn.softmax(fc2)
# 定义损失函数和优化器
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_true, logits=y_pred))
optimizer = tf.train.AdamOptimizer(learning_rate=0.001)
train = optimizer.minimize(cross_entropy)
在这个例子中,我们使用了 tf.layers 模块来定义卷积层和全连接层。我们也添加了 dropout 层来减少过拟合。最后,我们使用 softmax 层来输出模型的预测结果。在训练过程中,我们使用交叉熵作为损失函数,使用 Adam 优化器来更新模型参数
原文地址: http://www.cveoy.top/t/topic/e4U4 著作权归作者所有。请勿转载和采集!