def add_layer(inputs, in_size, out_size, activation_function=None):
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
Wx_plus_b = tf.matmul(inputs, Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs
y_out = x_in * W + b
今天來用上圖了解一下昨天添加神經網路的寫法,先把通用模塊寫完。關於activation_funtion可以點進來看很多的總類,這邊先選None之後用到再加上即可,以hidden layer來說對比上圖weights裡面的in_size就是等於input進來的神經元個數(4),out_size就是隱藏層的神經元個數(6)。
hidden_layer = add_layer(input, input_tensors = 4, output_tensors = 6, activation_function = None)
biases最好不要用0就設0.1,因為y_out維度是(1,6)因此in_size=1,out_size=6然後再把整個0向量+0.1,幾本上把它想成線性代數的就可以把結構定義出來。因此我們有
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
最後寫出神經網絡未激活的值
Wx_plus_b = tf.matmul(inputs, Weights) + biases # tf.matmul是矩陣乘法
輸出層的話即可寫成
output_layer = add_layer(hidden_layer, input_tensors = 6, output_tensors = 3, activation_function = None)
最後再假設激活函數有無狀況再返回輸出就完成添加層函數~
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs
要看懂跟熟悉輸入層、隱藏層與輸出層真的需要一點時間
明天來了解一下加速神經網絡的一些演算法~