全連接層和輸出方式! |
文章目錄
一、全連接層
1.1、前言介紹
1.2、Fully connected layer(全連接層)
- 的 和 的不一致情況
1.3、Muti-layers前面是一層
1.4、實戰演練
- 測試代碼
import tensorflow as tf
from tensorflow import keras
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
x = tf.random.normal([2,3])
model = keras.Sequential([
keras.layers.Dense(2, activation='relu'),
keras.layers.Dense(2, activation='relu'),
keras.layers.Dense(2)
])
model.build(input_shape=[None, 3])
model.summary()
for p in model.trainable_variables:
print(p.name,p.shape)
- 運行結果
1.5、補充tensorflow在pycharm自動補全
- 我們使用的時候可以發現,pycharm中tensorflow2.0的代碼補全功能很不好用;其實不是因爲pycharm的原因,是tensorflow代碼封裝的原因,可以用下面的方式:
from tenorflow.python import keras #代替下面的
from tensorflow import keras #代碼補全功能就非常好用了。
原因是因爲: 看tensorflow的源碼,有一個@tf_exportt的裝飾器,帶有這個的都可以用,但是沒有辦法補全。
二、輸出方式
2.1、輸出範圍約束
2.2、實數集範圍R
2.3、輸出範圍[0-1]tf.sigmoid()
- 演示實例:
注意:
1、tf.linspace(start, end, num):這個函數主要的參數就這三個,start代表起始的值,end表示結束的值,num表示在這個區間裏生成數字的個數,生成的數組是等間隔生成的。start和end這兩個數字必須是浮點數,不能是整數,如果是整數會出錯的,請注意!
2、np.linspace(start, end, num):主要的參數也是這三個,我們平時用的時候絕大多數時候就是用這三個參數。start代表起始的值,end表示結束的值,num表示在這個區間裏生成數字的個數,生成的數組是等間隔生成的。start和end這兩個數字可以是整數或者浮點數!
2.4、輸出範圍[0-1]tf.nn.softmax()
- 經常應用在分類問題
2.5、輸出範圍[-1~1]tf.nn.softmax()
注意: tanh函數其實是sigmoid函數通過平移實現的,先對y的範圍進行一個放大,放達到0~2,再往下平移了一下。把數值壓縮到-1到1之間。