1. 程式人生 > >利用tensorflow實現神經網路卷積層、池化層、全連線層

利用tensorflow實現神經網路卷積層、池化層、全連線層

第一步:匯入相應的庫

import tensorflow as tf
import numpy as np
  • 1
  • 2

第二步:準備資料(隨機生成一維資料)

data_size=25  
x_data=np.random.normal(size=data_size)
x_input_1d=tf.placeholder(dtype=tf.float32,shape=[x_data])
  • 1
  • 2
  • 3

第三步:搭建一個簡單的卷積層,並輸出(這裡進行擴維是因為原始資料是一維的,我們需要把它擴到四維進行計算)

def conv_1d(input_1d,my_filter):
    input_2d=tf.expand_dims(input_1d,0
) input_3d=tf.expand_dims(input_2d,0) input_4d=tf.expand_dims(input_3d,3) conv_output=tf.nn.conv2d(input_4d,my_filter,strides=[1,1,1,1],padding="VALID") conv_output_1d=tf.squeeze(conv_output) return (conv_output_1d) my_filter=tf.Variable(tf.random_normal(shape=[1,1,5,1])) #類似於視窗大小
#卷積輸出 my_conv_output=conv_1d(x_input_1d,my_filter=my_filter)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第四步:定義一個啟用函式

def activation(my_conv_output):
    return tf.nn.sigmoid(my_conv_output)
  • 1
  • 2

第五步:池化層搭建,並輸出(擴維的原因與上面類似)

def max_pooling(input_1d,width):
    input_2d=tf.expand_dims(input_1d,0)
    input_3d=tf.expand_dims(input_2d,0)
    input_4d=tf.expand_dims(input_3d,3
) max_pool_output=tf.nn.max_pool(input_4d,ksize=[1,1,width,1],strides=[1,1,1,1],padding="VALID") max_pool_output_1d=tf.squeeze(max_pool_output) return (max_pool_output_1d) my_max_output=max_pooling(conv_out,5)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

第六步:搭建全連線層,並輸出

def fully_connect_layer(input_layer,output_nums):
    weight_shape=tf.squeeze(tf.stack([tf.shape(input_layer),[output_nums]]))
    weight=tf.Variable(tf.random_normal(shape=weight_shape,stddev=0.1))
    bias=tf.Variable(tf.random_normal(shape=[output_nums]))

    #進行矩陣相乘時,先將一維陣列轉換成矩陣
    input_2d=tf.expand_dims(input_layer,0)
    full_output=tf.add(tf.matmul(input_2d,weight),bias)
    full_output_1d=tf.squeeze(full_output)
    return (full_output_1d)

#全連線層的輸出
my_full_output=fully_connect_layer(my_max_output,5)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

第七步:建立會話,並初始化所有變數

sess=tf.Session()
init=tf.global_variables_initializer()
sess.run(init)

#獲取變數值
feed_dict={x_input_1d:x_data}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

最後一步:輸出

print("CONV"+sess.run(my_conv_output,feed_dict=feed_dict))
print("Max_pool"+sess.run(my_max_output,feed_dict=feed_dict))
print("Full_output"+sess.run(my_full_output,feed_dict=feed_dict))

相關推薦

利用tensorflow實現神經網路連線

第一步:匯入相應的庫import tensorflow as tf import numpy as np12第二步:準備資料(隨機生成一維資料)data_size=25 x_data=np.random.normal(size=data_size) x_input_1d=

續(利用tensorflow實現簡單的神經網路-對程式碼中相關函式介紹)——遷移學習小記(三)

  上篇文章對cnn進行了一些介紹,附了完整小例子程式碼,介紹了一部分函式概念,但是對我這樣的新手來說,程式碼中涉及的部分函式還是無法一下子全部理解。於是在本文中將對程式碼中使用的函式繼續進行一一介紹。 具體程式碼見上一篇(二) 一、 #定義輸入的placehoder,x是特徵

利用tensorflow實現簡單的神經網路——遷移學習小記(二)

一、什麼是神經網路(CNN)     卷積神經網路(Convolutional Neural Network,簡稱CNN),是一種前饋神經網路,人工神經元可以影響周圍單元,可以進行大型影象處理。卷積神經網路包括卷積層和池化層。卷積神經網路是受到生物思考方式的啟發的MLPs(多

利用tensorflow實現簡單的神經網路

一、什麼是神經網路(CNN)     卷積神經網路(Convolutional Neural Network,簡稱CNN),是一種前饋神經網路,人工神經元可以影響周圍單元,可以進行大型影象處理。卷積神經網路包括卷積層和池化層。卷積神經網路是受到生物思考方式的啟發的MLPs(

神經網路CNN:Tensorflow實現(以及對特徵的視覺)

本文主要是實現了一個簡單的卷積神經網路,並對卷積過程中的提取特徵進行了視覺化.   卷積神經網路最早是為了解決影象識別的問題,現在也用在時間序列資料和文字資料處理當中,卷積神經網路對於資料特徵的提取不用額外進行,在對網路的訓練的過程當中,網路會自動提

TensorFlow實戰】用TensorFlow實現簡單的神經網路

#本次將練習實現一個簡單的卷積神經網路,使用的資料集依然是MNIST, #預期可以達到99.2%左右的準確性 #使用兩個卷積層加上一個全連線蹭構建一個簡單但是非常具有代表性的卷積神經網路 #載入MNIST資料集,並且建立預設的Interactive Sessio

神經網路實現原理與視覺其過程 (caffe為例)

caffe中卷積層的實現 1 caffe卷積前向傳播 caffe前向傳播涉及到的類主要如下: 首先卷積層conv_layer.cpp中的Fprward進行前向傳播,呼叫父類base_conv_layer.cpp中的forward進行前向傳播,該函式

神經網路核大小個數,數的確定

卷積神經網路的卷積核大小、卷積層數、每層map個數都是如何確定下來的呢?看到有些答案是剛開始隨機初始化卷積核大小,卷積層數和map個數是根據經驗來設定的,但這個裡面應該是有深層次原因吧,比如下面的手寫字卷積神經網路結構圖1,最後輸出為什麼是12個map,即輸出12個特徵?

一張圖理解神經網路和感受野

區域性關聯:每個畫素點和她周邊的點廣聯大(影象連續) 形象地說,左邊是32*32*3的影象,我們讓五個小朋友分別看,右邊的12345小盆友分別關注影象的顏色,輪廓,紋理等等資訊。 五個小朋友對應五個神經元,也叫filter,每個小盆友視野有限,每次只看一小塊,慢慢滑動直

tensorflow實現1維

函數 class amp lte .org same and ide result 官方參考文檔:https://www.tensorflow.org/api_docs/python/tf/nn/conv1d 參考網頁: http://www.riptutorial.com

Sentiment Analysis with Recurrent Neural Networks in TensorFlow 利用TensorFlow迴歸神經網路進行情感分析 Pluralsigh

Sentiment Analysis with Recurrent Neural Networks in TensorFlow 中文字幕 利用TensorFlow迴歸神經網路進行情感分析 中文字幕Sentiment Analysis with Recurrent Neural Netwo

吳恩達神經網路——神經網路

計算機視覺 相關問題: 1)影象分類: 2)目標檢測: 3)影象風格遷移: 挑戰:資料輸入可能會非常大 輸入10001000的彩色影象,則需要輸入的資料量為100010003 =3M,這意味著特徵向量X的維度高達3M ,如果在第一隱藏層有1000個神經元,使用標準全連線,那麼權值矩

tensorflow實現神經網路

tensorflow實現神經網路 1、全部步驟 實現前向傳播 宣告學習率 引數進行正則化計算 計算損失函式 反向傳播 引數進行滑動平均 2、各個步驟解釋 前向傳播:主要是定義這個網路的結構,網路是幾層的,以及每層使用的啟用函式是

神經網路——神經網路基礎(9)

機器視覺 機器視覺(Computer Vision)是深度學習應用的主要方向之一。一般的CV問題包括以下三類: Image Classification Object detection Neural Style Transfer 1.邊緣檢測

【機器學習筆記22】神經網路(神經網路)

【參考資料】 【1】《面向機器智慧的tensorflow實踐》 【2】Keras/example – mnist_cnn.py 【3】Keras中文文件 常用層 卷積層 卷積理解就是之前影象處理裡用作檢測邊緣、檢測角點的運算元,例如: 輸入: [1234] \

Sentiment Analysis with Recurrent Neural Networks in TensorFlow 利用TensorFlow迴歸神經網路進行情感分析 Pluralsigh

Sentiment Analysis with Recurrent Neural Networks in TensorFlow 中文字幕 利用TensorFlow迴歸神經網路進行情感分析 中文字幕Sentiment Analysis with Recurrent

例子:tensorflow實現神經網路

add_layer 功能 首先,我們匯入本次所需的模組。 import tensorflow as tf import numpy as np 構造新增一個神經層的函式 def add_layer(inputs, in_size, out_size, activation_

【連載】深度學習筆記8:利用Tensorflow搭建神經網路

      在筆記7中,和大家一起入門了  Tensorflow 的基本語法,並舉了一些實際的例子進行了說明,終於告別了使用 numpy 手動搭建的日子。所以我們將繼續往下走,看看如何利用  Tensorflow 搭建神經網路模型。       儘管對於初學者而言使用 Te

day-16 CNN神經網路演算法之Max pooling操作學習

         利用CNN卷積神經網路進行訓練時,進行完卷積運算,還需要接著進行Max pooling池化操作,目的是在儘量不丟失影象特徵前期下,對影象進行downsampling。          首先看下max pooling的具體操作:整個圖片被不重疊的分割成若干個同樣大小的小塊(pooling s

tensorflow 實現神經網路帶正則

import matplotlib.pyplot as plt import numpy as np import tensorflow as tf from sklearn import datasets from tensorflow.python.framework