今天試著用神經網路實驗sinx的擬合效果
(1)擬合資料
(2)擬合網路
def add_layer(input, in_size, out_size, activation_funtion = none):
w = tf.variable(tf.random_normal([in_size, out_size]))
b = tf.variable(tf.zeros([1, out_size]) +0.1)
wx_plus_b = tf.matmul(input, w) + b
if activation_funtion == none:
output = wx_plus_b
else:
output = activation_funtion(wx_plus_b)
return output
xs = tf.placeholder(tf.float32, [none, 1])
ys = tf.placeholder(tf.float32, [none, 1])
l1 = add_layer(xs, 1, 10, activation_funtion=tf.nn.relu)
prediction = add_layer(l1, 10, 1, activation_funtion= none)
loss = tf.reduce_mean(tf.square(prediction - ys))
train = tf.train.adamoptimizer(0.1).minimize(loss)
with tf.session() as sess:
sess.run(init)
for i in range(1000):
sess.run(train, feed_dict=)
if i % 50 == 0:
# try:
# print("run remove")
# #lines.remove([lines[0]])
# except exception:
# pass
predict_value = sess.run(prediction, feed_dict=)
lines = plt.plot(x_data, predict_value)
plt.pause(0.1)
#print(i, sess.run(prediction, feed_dict=)) ##test
print(i,sess.run(loss, feed_dict=)) ##train
下圖是執行1000步的效果:還不錯吧,在進行收斂,並且趨勢開始對了。
在試試100000步的效果;目前貌似開始光滑了,待會上圖。
目前24050步
目前看著感覺還是不錯的。
現在總結一下哈:
x的範圍很關鍵:剛開始為【0, 360】,結果沒法收斂,後來縮放到【-1, 1】,很快進行收斂,所以在影象處理中個對輸入值進行初始化確實是有一定的好處的。
神經網路(一)
神經網路 想讓計算機模擬大腦處理資訊的過程。如 有一杯水,手摸一下,收集溫度資訊,在神經元中進行傳遞,心中有乙個預設值,看是否溫度太高,還是太低。感知機 人工神經網路 神經網路的發展 傑弗里 埃弗里斯特 辛頓。英語 geoffrey everest hinton 是一位英國出生的計算機學家和心理學家...
神經網路 一
神經元是神經網路的基本組成。神經網路的神經元,是模仿生物的神經元結構。影象如下 為了形象理解,可以將上圖簡化如下 在這個神經元中,input的feature 可以有很多維度,output也可以有很多的 layer。感知機 1 感知機是網路神經的基礎,感知機也被稱為單層神經網路 即,單個神經元也稱作感...
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...