日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CNN/RNN TF1.4

發(fā)布時(shí)間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CNN/RNN TF1.4 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
###CNN###
import
tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data'''這些是tf1.*版本,現(xiàn)在我已經(jīng)升級(jí)到2.0版本,上方數(shù)據(jù)集都用不了了...''''''黑白圖片,因此這里使用的是2D'''mnist=input_data.read_data_sets("MNIST_data",one_hot=True)batch_size=100 n_batch=mnist.train.num_examples//batch_sizetf=tf.compat.v1#初始化權(quán)值(這樣初始化真的很重要) def weight_variable(shape):initial=tf.truncated_normal(shape=shape,stddev=0.1)#生成一個(gè)截?cái)嗟恼龖B(tài)分布return tf.Variable(initial)#初始化偏置值 def bias_variable(shape):initial=tf.constant(0.1,shape=shape)return tf.Variable(initial)#卷積層 def conv2d(x,W):#x:輸入 【batch,in_height,in_width,in_channels(通道數(shù))】#W:濾波器#strides:步長(zhǎng)#padding:個(gè)人選擇:SAME/VALIDreturn tf.nn.conv2d(x,W,strides=[1,1,1,1],padding="SAME")#池化層 def max_pool_2x2(x):#ksize=[1 x y 1] #步長(zhǎng)2return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')#用max_pool2d也是可以的 x=tf.placeholder(tf.float32,[None,784]) y=tf.placeholder(tf.float32,[None,10])#改變x的格式轉(zhuǎn)為4D的向量[batch,in_height,in_width,in_channels] x_image=tf.reshape(x,[-1,28,28,1])#-1還是那個(gè)意思,就是輸入的個(gè)數(shù)不確定,讓它自行計(jì)算是多少#初始化第一個(gè)卷積層的權(quán)值和偏置 W_conv1=weight_variable([5,5,1,32])#5*5采樣窗口,32個(gè)卷積核從1個(gè)平面抽取特征(從一個(gè)平面提取32個(gè)特征平面)【就是生成1D的32個(gè)卷積核,分別進(jìn)行卷積,從而1個(gè)平面得到32個(gè)卷積特征平面】 b_conv1=bias_variable([32])#給這個(gè)卷積核設(shè)置一個(gè)偏置值#把x_image和權(quán)值向量進(jìn)行卷積,再加上偏置值,然后應(yīng)用relu激活函數(shù) h_cov1=tf.nn.relu(conv2d(x_image,W_conv1)+b_conv1)#利用平面(2D)卷積進(jìn)行卷積,并加一個(gè)偏置,得到批次*32個(gè)平面的 h_pool1=max_pool_2x2(h_cov1)#進(jìn)行max-pooling#初始化第二個(gè)卷積層的權(quán)值和偏置 W_conv2=weight_variable([5,5,32,64])#5*5采樣窗口,64個(gè)卷積核從32個(gè)平面抽取特征(從32個(gè)平面提取64個(gè)特征平面)【生成32D的64個(gè)卷積核,分別進(jìn)行卷積,從而得到1個(gè)包含64個(gè)卷積平面】 b_conv2=bias_variable([64])#么個(gè)卷積核設(shè)置一個(gè)偏置值#把h_pool1和權(quán)值向量進(jìn)行卷積,再加上偏置值,然后應(yīng)用relu激活函數(shù) h_cov2=tf.nn.relu(conv2d(h_pool1,W_conv2)+b_conv2) h_pool2=max_pool_2x2(h_cov2)#進(jìn)行max-pooling#28*28的圖片第一次卷積后還是28*28,第一次初花后變成14*14 #第二次卷積后14*14,第二次池化后變成7*7 #上方操作完后的得到64張7*7的平面'''下方就是正常的神經(jīng)網(wǎng)絡(luò)(全連接)'''#初始化第一個(gè)全連接層的權(quán)值 W_fc1=weight_variable([7*7*64,1024])#上一層有7*7*64個(gè)神經(jīng)元,全連接層有1024個(gè)神經(jīng)元 b_cf1=bias_variable([1,1024])#將池化層2的輸出扁平化為1維 h_pool2_flat=tf.reshape(h_pool2,[-1,7*7*64])#100,7*7*64 #求第一個(gè)全連接層的輸出 h_fc1=tf.nn.relu(tf.matmul(h_pool2_flat,W_fc1)+b_cf1)#keep_prob用來(lái)表示神經(jīng)元的輸出概率 keep_prob=tf.placeholder(tf.float32) h_fc1_drop=tf.nn.dropout(h_fc1,keep_prob)#初始化第二個(gè)全連接層 W_fc2=weight_variable([1024,10]) b_cf2=bias_variable([1,10])#計(jì)算輸出 prediction=tf.nn.softmax(tf.matmul(h_fc1_drop,W_fc2)+b_cf2)#交叉熵代價(jià)函數(shù) cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction)) #優(yōu)化器 train_step=tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)#結(jié)果存放在一個(gè)布爾列表中 correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))acc=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))with tf.Session() as sess:sess.run(tf.global_variables_initializer())for i in range(21):for batch in range(n_batch):batch_x,batch_y=mnist.train.next_batch(batch_size)sess.run(train_step,feed_dict={x:batch_x,y:batch_y,keep_prob:0.7})accuracy=sess.run(acc,feed_dict={x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})print(""+str(i+1)+"次迭代準(zhǔn)確率為:"+str(accuracy))

?

###RNN###
import
tensorflow as tf from tensorflow.examples.tutorials.mnist import input_datamnist=input_data.read_data_sets("MNIST_data",one_hot=True)tf=tf.compat.v1#輸入圖片是28*28 n_input=28#輸入一行,一行有28個(gè)數(shù)據(jù) max_time=28#一共28行 lstm_size=100#隱藏單元 n_classes=10#10個(gè)分類 batch_size=50#m每個(gè)批次50個(gè)樣本 n_batch=mnist.train.num_examples//batch_size#一共有多少個(gè)批次 x=tf.placeholder(tf.float32,[None,784]) y=tf.placeholder(tf.float32,[None,10])'''下方權(quán)重是隱藏層和輸出層之間的權(quán)重和偏置''' #初始化權(quán)值 weights=tf.Variable(tf.truncated_normal([lstm_size,n_classes],stddev=0.1)) #初始化偏置值 biases=tf.Variable(tf.constant(0.1,shape=[1,n_classes]))#定義RNN網(wǎng)絡(luò) def RNN(x,weights,biases):#inputs=[batch_size,max_time,n_input]>>[batch_size,in_height,in_width]inputs=tf.reshape(x,[-1,max_time,n_input])#定義LSTM基本CELLlstm_Cell=tf.nn.rnn_cell.BasicLSTMCell(lstm_size)#每個(gè)隱藏層中都會(huì)有一個(gè)cell#final_state[0]是cell_state#final_state[1]是hidden_state 由34行可見該形狀為 ?*100(隱藏單元個(gè)數(shù)) 由返回值prediction可知results它與y形狀相同(50,10) 所以他的形狀為50(batch_size)*100(隱藏單元個(gè)數(shù))outputs,final_state=tf.nn.dynamic_rnn(lstm_Cell,inputs,dtype=tf.float32)results=tf.nn.softmax(tf.matmul(final_state[1],weights)+biases)#經(jīng)過(guò)softmax轉(zhuǎn)化為概率顯示return results#計(jì)算RNN返回結(jié)果 prediction=RNN(x,weights,biases) #損失函數(shù) cross_entropy=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction,labels=y)) #使用Adam優(yōu)化器 train_step=tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1)) accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for i in range(21):for j in range(n_batch):batch_x,batch_y=mnist.train.next_batch(batch_size)sess.run(train_step,feed_dict={x:batch_x,y:batch_y})acc=sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})print(""+str(i+1)+"次迭代準(zhǔn)確率為:"+str(acc))

?

轉(zhuǎn)載于:https://www.cnblogs.com/ningxinjie/p/11412665.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的CNN/RNN TF1.4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。