{"id":45101,"date":"2023-12-11T15:04:51","date_gmt":"2023-12-11T07:04:51","guid":{"rendered":"https:\/\/wx.kaifamiao.info\/?p=45101"},"modified":"2023-12-11T15:04:51","modified_gmt":"2023-12-11T07:04:51","slug":"%e6%89%8b%e5%86%99%e4%b8%80%e4%b8%8btensorflow%e7%9a%84%e5%9b%be%e5%83%8f%e5%88%86%e7%b1%bb%e4%bb%a3%e7%a0%81-2","status":"publish","type":"post","link":"http:\/\/wx.kaifamiao.info\/index.php\/2023\/12\/11\/%e6%89%8b%e5%86%99%e4%b8%80%e4%b8%8btensorflow%e7%9a%84%e5%9b%be%e5%83%8f%e5%88%86%e7%b1%bb%e4%bb%a3%e7%a0%81-2\/","title":{"rendered":"\u624b\u5199\u4e00\u4e0btensorflow\u7684\u56fe\u50cf\u5206\u7c7b\u4ee3\u7801"},"content":{"rendered":"<p>&#8220;`&#8221;                    \u53c2\u8003\u56de\u7b54\uff1a<\/p>\n<p>tensorflow\u7684\u56fe\u50cf\u5206\u7c7b\u4ee3\u7801<\/p>\n<pre><code># -*- coding: utf-8 -*-\nfrom skimage import io,transform\nimport glob\nimport os\nimport tensorflow as tf\nimport numpy as np\nimport time\npath='e:\/flower\/'\n<\/code><\/pre>\n<p>#\u5c06\u6240\u6709\u7684\u56fe\u7247resize\u6210100*100<\/p>\n<pre><code>`w=``100``h=``100``c=``3`\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>#\u8bfb\u53d6\u56fe\u7247<\/p>\n<pre><code>def read_img(path):\ncate=[path+x for x in os.listdir(path) if os.path.isdir(path+x)]\nimgs=[]\nlabels=[]\nfor idx,folder in enumerate(cate):\nfor im in glob.glob(folder+'\/*.jpg'):\nprint('reading the images:%s'%(im))\nimg=io.imread(im)\nimg=transform.resize(img,(w,h))\nimgs.append(img)\nlabels.append(idx)\nreturn np.asarray(imgs,np.float32),np.asarray(labels,np.int32)\ndata,label=read_img(path)\n<\/code><\/pre>\n<p>#\u6253\u4e71\u987a\u5e8f<\/p>\n<pre><code>`num_example=data.shape[``0``]``arr=np.arange(num_example)``np.random.shuffle(arr)``data=data[arr]``label=label[arr]`\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>#\u5c06\u6240\u6709\u6570\u636e\u5206\u4e3a\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6<\/p>\n<pre><code>ratio=0.8\ns=np.int(num_example*ratio)\nx_train=data[:s]\ny_train=label[:s]\nx_val=data[s:]\ny_val=label[s:]\n<\/code><\/pre>\n<p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;\u6784\u5efa\u7f51\u7edc&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<pre><code>`x=tf.placeholder(tf.float32,shape=[None,w,h,c],name=``'x'``)``y_=tf.placeholder(tf.int32,shape=[None,],name=``'y_'``)`\n<\/code><\/pre>\n<p>#\u7b2c\u4e00\u4e2a\u5377\u79ef\u5c42\uff08100&mdash;&mdash;&gt;50)<\/p>\n<pre><code>conv1=tf.layers.conv2d(inputs=x,filters=32,kernel_size=[5, 5],padding=\"\"same\"\",\nactivation=tf.nn.relu,kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))\npool1=tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)\n<\/code><\/pre>\n<p>#\u7b2c\u4e8c\u4e2a\u5377\u79ef\u5c42(50-&gt;25)<\/p>\n<pre><code>conv2=tf.layers.conv2d(inputs=pool1,filters=64,kernel_size=[5, 5],padding=\"\"same\"\",\nactivation=tf.nn.relu,kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))\npool2=tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2)\n<\/code><\/pre>\n<p>#\u7b2c\u4e09\u4e2a\u5377\u79ef\u5c42(25-&gt;12)<\/p>\n<pre><code>conv3=tf.layers.conv2d(inputs=pool2,filters=128,kernel_size=[3, 3],padding=\"\"same\"\",\nactivation=tf.nn.relu,kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))\npool3=tf.layers.max_pooling2d(inputs=conv3, pool_size=[2, 2], strides=2)\n<\/code><\/pre>\n<p>#\u7b2c\u56db\u4e2a\u5377\u79ef\u5c42(12-&gt;6)<\/p>\n<pre><code>conv4=tf.layers.conv2d(inputs=pool3,filters=128,kernel_size=[3, 3],padding=\"\"same\"\",\nactivation=tf.nn.relu,kernel_initializer=tf.truncated_normal_initializer(stddev=0.01))\npool4=tf.layers.max_pooling2d(inputs=conv4, pool_size=[2, 2], strides=2)\nre1 = tf.reshape(pool4, [-1, 6 * 6 * 128])\n<\/code><\/pre>\n<p>#\u5168\u8fde\u63a5\u5c42<\/p>\n<pre><code>dense1 = tf.layers.dense(inputs=re1, units=1024, activation=tf.nn.relu,\nkernel_initializer=tf.truncated_normal_initializer(stddev=0.01),\nkernel_regularizer=tf.contrib.layers.l2_regularizer(0.003))\ndense2= tf.layers.dense(inputs=dense1, units=512, activation=tf.nn.relu,\nkernel_initializer=tf.truncated_normal_initializer(stddev=0.01),\nkernel_regularizer=tf.contrib.layers.l2_regularizer(0.003))\nlogits= tf.layers.dense(inputs=dense2, units=5, activation=None,\nkernel_initializer=tf.truncated_normal_initializer(stddev=0.01),\nkernel_regularizer=tf.contrib.layers.l2_regularizer(0.003))\n<\/code><\/pre>\n<p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u7f51\u7edc\u7ed3\u675f&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<pre><code>loss=tf.losses.sparse_softmax_cross_entropy(labels=y_,logits=logits)\ntrain_op=tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)\ncorrect_prediction = tf.equal(tf.cast(tf.argmax(logits,1),tf.int32), y_)\nacc= tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>#\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\uff0c\u6309\u6279\u6b21\u53d6\u6570\u636e<\/p>\n<pre><code>def minibatches(inputs=None, targets=None, batch_size=None, shuffle=False):\nassert len(inputs) == len(targets)\nif shuffle:\nindices = np.arange(len(inputs))\nnp.random.shuffle(indices)\nfor start_idx in range(0, len(inputs) - batch_size + 1, batch_size):\nif shuffle:\nexcerpt = indices[start_idx:start_idx + batch_size]\nelse:\nexcerpt = slice(start_idx, start_idx + batch_size)\nyield inputs[excerpt], targets[excerpt]\n<\/code><\/pre>\n<p>#\u8bad\u7ec3\u548c\u6d4b\u8bd5\u6570\u636e\uff0c\u53ef\u5c06n_epoch\u8bbe\u7f6e\u66f4\u5927\u4e00\u4e9b<\/p>\n<pre><code>`n_epoch=10``batch_size=64``sess=tf.InteractiveSession()``sess.run(tf.global_variables_initializer())``for` `epoch in range(n_epoch):``start_time = ``time``.``time``()``#training``train_loss, train_acc, n_batch = 0, 0, 0``for` `x_train_a, y_train_a in minibatches(x_train, y_train, batch_size, shuffle=True):``_,err,ac=sess.run([train_op,loss,acc], feed_dict={x: x_train_a, y_: y_train_a})``train_loss += err; train_acc += ac; n_batch += 1``print(``\"\"  train loss: %f\"\"` `% (train_loss\/ n_batch))``print(``\"\"  train acc: %f\"\"` `% (train_acc\/ n_batch))``#validation``val_loss, val_acc, n_batch = 0, 0, 0``for` `x_val_a, y_val_a in minibatches(x_val, y_val, batch_size, shuffle=False):``err, ac = sess.run([loss,acc], feed_dict={x: x_val_a, y_: y_val_a})``val_loss += err; val_acc += ac; n_batch += 1``print(``\"\"  validation loss: %f\"\"` `% (val_loss\/ n_batch))``print(``\"\"  validation acc: %f\"\"` `% (val_acc\/ n_batch))``sess.close()`\n<\/code><\/pre>\n<pre><code>            \"```\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;`&#8221; \u53c2\u8003\u56de\u7b54\uff1a tensorflow\u7684\u56fe\u50cf\u5206\u7c7b\u4ee3\u7801 # -*- coding: u [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[],"class_list":["post-45101","post","type-post","status-publish","format-standard","hentry","category-c"],"_links":{"self":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/45101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/comments?post=45101"}],"version-history":[{"count":1,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/45101\/revisions"}],"predecessor-version":[{"id":45102,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/45101\/revisions\/45102"}],"wp:attachment":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/media?parent=45101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/categories?post=45101"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/tags?post=45101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}