# TensorFlow 中的卷积网络

2022年11月23日
0 收藏 350 点赞 4,688 浏览 4361 个字

# TensorFlow 中的卷积网络

### 数据集

`from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets(".", one_hot=True, reshape=False)import tensorflow as tf# Parameters# 参数learning_rate = 0.00001epochs = 10batch_size = 128# Number of samples to calculate validation and accuracy# Decrease this if you're running out of memory to calculate accuracy# 用来验证和计算准确率的样本数# 如果内存不够，可以调小这个数字test_valid_size = 256# Network Parameters# 神经网络参数n_classes = 10  # MNIST total classes (0-9 digits)dropout = 0.75  # Dropout, probability to keep units`

### Weights and Biases

`# Store layers weight & biasweights = {    'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])),    'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])),    'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])),    'out': tf.Variable(tf.random_normal([1024, n_classes]))}biases = {    'bc1': tf.Variable(tf.random_normal([32])),    'bc2': tf.Variable(tf.random_normal([64])),    'bd1': tf.Variable(tf.random_normal([1024])),    'out': tf.Variable(tf.random_normal([n_classes]))}`

### 卷积

`def conv2d(x, W, b, strides=1):    x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1], padding='SAME')    x = tf.nn.bias_add(x, b)    return tf.nn.relu(x)`

`tf.nn.conv2d()` 函数与权值 `W` 做卷积。

### 最大池化

`def maxpool2d(x, k=2):    return tf.nn.max_pool(        x,        ksize=[1, k, k, 1],        strides=[1, k, k, 1],        padding='SAME')`

`tf.nn.max_pool()` 函数做的与你期望的一样，它通过设定 `ksize` 参数来设定滤波器大小，从而实现最大池化。

### 模型

Image from Explore The Design Space video

`def conv_net(x, weights, biases, dropout):    # Layer 1 - 28*28*1 to 14*14*32    conv1 = conv2d(x, weights['wc1'], biases['bc1'])    conv1 = maxpool2d(conv1, k=2)    # Layer 2 - 14*14*32 to 7*7*64    conv2 = conv2d(conv1, weights['wc2'], biases['bc2'])    conv2 = maxpool2d(conv2, k=2)    # Fully connected layer - 7*7*64 to 1024    fc1 = tf.reshape(conv2, [-1, weights['wd1'].get_shape().as_list()[0]])    fc1 = tf.add(tf.matmul(fc1, weights['wd1']), biases['bd1'])    fc1 = tf.nn.relu(fc1)    fc1 = tf.nn.dropout(fc1, dropout)    # Output Layer - class prediction - 1024 to 10    out = tf.add(tf.matmul(fc1, weights['out']), biases['out'])    return out`

### Session

`# tf Graph inputx = tf.placeholder(tf.float32, [None, 28, 28, 1])y = tf.placeholder(tf.float32, [None, n_classes])keep_prob = tf.placeholder(tf.float32)# Modellogits = conv_net(x, weights, biases, keep_prob)# Define loss and optimizercost = tf.reduce_mean(\    tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y))optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\    .minimize(cost)# Accuracycorrect_pred = tf.equal(tf.argmax(logits, 1), tf.argmax(y, 1))accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))# Initializing the variablesinit = tf. global_variables_initializer()# Launch the graphwith tf.Session() as sess:    sess.run(init)    for epoch in range(epochs):        for batch in range(mnist.train.num_examples//batch_size):            batch_x, batch_y = mnist.train.next_batch(batch_size)            sess.run(optimizer, feed_dict={                x: batch_x,                y: batch_y,                keep_prob: dropout})            # Calculate batch loss and accuracy            loss = sess.run(cost, feed_dict={                x: batch_x,                y: batch_y,                keep_prob: 1.})            valid_acc = sess.run(accuracy, feed_dict={                x: mnist.validation.images[:test_valid_size],                y: mnist.validation.labels[:test_valid_size],                keep_prob: 1.})            print('Epoch {:>2}, Batch {:>3} -'                  'Loss: {:>10.4f} Validation Accuracy: {:.6f}'.format(                epoch + 1,                batch + 1,                loss,                valid_acc))    # Calculate Test Accuracy    test_acc = sess.run(accuracy, feed_dict={        x: mnist.test.images[:test_valid_size],        y: mnist.test.labels[:test_valid_size],        keep_prob: 1.})    print('Testing Accuracy: {}'.format(test_acc))`

python开发_常用的python模块及安装方法

Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接：http://www.codeforces.com/contest/660/problem/CDes…

zengkefu@server1:/usr/src\$ uname -aLinux server1 4.10.0-19-generic #21…

Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式，并且由于涉及到要把拍到的照片显…

Struts的使用

400-888-8888

ceotheme@ceo.com