From 6585dce71cf8804357c6822b63be92486841a422 Mon Sep 17 00:00:00 2001 From: px3gkymai <1565756097@qq.com> Date: Tue, 10 May 2022 19:27:56 +0800 Subject: [PATCH] ADD file via upload --- model.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 model.py diff --git a/model.py b/model.py new file mode 100644 index 0000000..1869491 --- /dev/null +++ b/model.py @@ -0,0 +1,62 @@ +import tensorflow.compat.v1 as tf +import utils +tf.compat.v1.disable_eager_execution() + +def get_model(is_train=False, keep_prob=0.8, alpha=0.8): + with tf.variable_scope("model", reuse=not is_train): + tf_x = tf.placeholder(tf.float32, shape=[None, utils.IMAGE_HEIGHT, utils.IMAGE_WIDTH, utils.IMAGE_CHANNEL]) + tf_y = tf.placeholder(tf.int32, shape=[None]) + tf_y_one_hot = tf.one_hot(tf_y, utils.IMAGE_CLASSIFY) + + # conv 1 + filter_1 = tf.Variable(tf.truncated_normal(shape=[5, 5, 3, 32], mean=utils.mu, stddev=utils.sigma)) + bias_1 = tf.Variable(tf.constant(0.1, shape=[32])) + conv_1 = tf.nn.conv2d(tf_x, filter=filter_1, strides=[1, 2, 2, 1], padding='SAME') + bias_1 + leaky_relu_1 = tf.nn.leaky_relu(conv_1, alpha=alpha) + + # conv 2 + filter_2 = tf.Variable(tf.truncated_normal(shape=[3, 3, 32, 48], mean=utils.mu, stddev=utils.sigma)) + bias_2 = tf.Variable(tf.constant(0.1, shape=[48])) + conv_2 = tf.nn.conv2d(leaky_relu_1, filter=filter_2, strides=[1, 2, 2, 1], padding='SAME') + bias_2 + leaky_relu_2 = tf.nn.leaky_relu(conv_2, alpha=alpha) + + # conv 3 + filter_3 = tf.Variable(tf.truncated_normal(shape=[3, 3, 48, 64], mean=utils.mu, stddev=utils.sigma)) + bias_3 = tf.Variable(tf.constant(0.1, shape=[64])) + conv_3 = tf.nn.conv2d(leaky_relu_2, filter=filter_3, strides=[1, 2, 2, 1], padding='SAME') + bias_3 + leaky_relu_3 = tf.nn.leaky_relu(conv_3, alpha=alpha) + + dropout = tf.nn.dropout(leaky_relu_3, keep_prob=keep_prob) + + # flatten,Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡 + shape = dropout.get_shape().as_list() + flatten_size = shape[1] * shape[2] * shape[3] + flatten = tf.reshape(dropout, [-1, flatten_size]) + + # fc 1 + filter_4 = tf.Variable(tf.truncated_normal(shape=[flatten.get_shape().as_list()[1], 100], + mean=utils.mu, stddev=utils.sigma)) + bias_4 = tf.Variable(tf.constant(0.1, shape=[100])) + fc_1 = tf.matmul(flatten, filter_4) + bias_4 + leaky_relu_4 = tf.nn.leaky_relu(fc_1, alpha=alpha) + + # fc 2 + filter_5 = tf.Variable(tf.truncated_normal(shape=[100, 50], mean=utils.mu, stddev=utils.sigma)) + bias_5 = tf.Variable(tf.constant(0.1, shape=[50])) + fc_2 = tf.matmul(leaky_relu_4, filter_5) + bias_5 + leaky_relu_5 = tf.nn.leaky_relu(fc_2, alpha=alpha) + + # fc 3 + filter_6 = tf.Variable(tf.truncated_normal(shape=[50, 10], mean=utils.mu, stddev=utils.sigma)) + bias_6 = tf.Variable(tf.constant(0.1, shape=[10])) + fc_3 = tf.matmul(leaky_relu_5, filter_6) + bias_6 + leaky_relu_6 = tf.nn.leaky_relu(fc_3, alpha=alpha) + + # result + filter_7 = tf.Variable(tf.truncated_normal(shape=[10, utils.IMAGE_CLASSIFY], + mean=utils.mu, stddev=utils.sigma)) + bias_7 = tf.Variable(tf.constant(0.1, shape=[utils.IMAGE_CLASSIFY])) + result = tf.matmul(leaky_relu_6, filter_7) + bias_7 + + last_layer = result if is_train else tf.nn.softmax(result) + return tf_x, tf_y, tf_y_one_hot, last_layer \ No newline at end of file