設為首頁
收藏本站
快捷導航
登錄
◆
◆
註冊
請
登錄
後使用快捷導航
沒有帳號?
註冊
討論區
BBS
部落格
Space
群組
Group
專題
Collection
金豆儲值
鑽石商城
Auction
綜合
綜合
帖子
用戶
搜尋
熱搜
line
燒餅
白貓
root
怪物彈珠
rangers
超注音
旅遊大亨
line主題
主題
鈦備份寶可夢外掛
pokemon go 外掛
台湾综合
necrobot
toptoon頂通破解
妖怪百姬修改
逍遙安
怪物彈珠外掛
便捷搜索
1 小時以內的新帖
4 小時以內的新帖
8 小時以內的新帖
24 小時以內的新帖
1 週內帖子
1 月內帖子
6 月內帖子
1 年內帖子
遊戲交流
遊戲下載
軟體交流
軟體下載
手機影視
桌布主題
漫畫小說
手機鈴聲
水族館
手機音樂
二手市場
新手專區
HTC
Sony
Samsung
TWM
Huawei
MOTO
解密技術
繁化技術
Android 台灣中文網
›
標籤
›
加法
標籤: 加法
相關帖子
版塊
作者
回覆/查看
最後發表
從加法開始的極簡生活 作者:澀谷直人 (繁_PDF)
Android 手機小說
wdiezs
2024-6-6
102
6545
lcyingying
2026-2-18 08:51
財富自由的整理鍊金術 作者:小印 (繁_PDF)
Android 手機小說
wdiezs
2024-6-10
100
6453
plusaa
2024-11-18 13:51
更多...
相關日誌
分享
rnn 八位元二進制加法
嵐風
2021-7-9 11:55
import copy, numpy as np np.random.seed(0) # compute sigmoid nonlinearity def sigmoid(x): output = 1/(1+np.exp(-x)) return output # convert output of sigmoid function to its derivative def sigmoid_output_to_derivative(output): return output*(1-output) # training dataset generation int2binary = {} binary_dim = 8 largest_number = pow(2,binary_dim) binary = np.unpackbits(np.array( ,dtype=np.uint8).T,axis=1) for i in range(largest_number): int2binary = binary # input variables alpha = 0.3 input_dim = 2 hidden_dim = 16 output_dim = 1 # initialize neural network weights synapse_0 = 2*np.random.random((input_dim,hidden_dim)) - 1 synapse_1 = 2*np.random.random((hidden_dim,output_dim)) - 1 synapse_h = 2*np.random.random((hidden_dim,hidden_dim)) - 1 synapse_0_update = np.zeros_like(synapse_0) synapse_1_update = np.zeros_like(synapse_1) synapse_h_update = np.zeros_like(synapse_h) # training logic for j in range(10000): # generate a simple addition problem (a + b = c) a_int = np.random.randint(largest_number/2) # int version a = int2binary # binary encoding b_int = np.random.randint(largest_number/2) # int version b = int2binary # binary encoding # true answer c_int = a_int + b_int c = int2binary # where we"ll store our best guess (binary encoded) d = np.zeros_like(c) overallError = 0 layer_2_deltas = list() layer_1_values = list() layer_1_values.append(np.zeros(hidden_dim)) # moving along the positions in the binary encoding for position in range(binary_dim): # generate input and output X = np.array( ,b ]]) y = np.array( ]]).T # hidden layer (input ~+ prev_hidden) layer_1 = sigmoid(np.dot(X,synapse_0) + np.dot(layer_1_values ,synapse_h)) # output layer (new binary representation) layer_2 = sigmoid(np.dot(layer_1,synapse_1)) # did we miss?... if so by how much? layer_2_error = y - layer_2 layer_2_deltas.append((layer_2_error)*sigmoid_output_to_derivative(layer_2)) overallError += np.abs(layer_2_error ) # decode estimate so we can print it out d = np.round(layer_2 ) # store hidden layer so we can use it in the next timestep layer_1_values.append(copy.deepcopy(layer_1)) future_layer_1_delta = np.zeros(hidden_dim) for position in range(binary_dim): X = np.array( ,b ]]) layer_1 = layer_1_values prev_layer_1 = layer_1_values # error at output layer layer_2_delta = layer_2_deltas # error at hidden layer layer_1_delta = (future_layer_1_delta.dot(synapse_h.T) + layer_2_delta.dot(synapse_1.T)) * sigmoid_output_to_derivative(layer_1) # let"s update all our weights so we can try again synapse_1_update += np.atleast_2d(layer_1).T.dot(layer_2_delta) synapse_h_update += np.atleast_2d(prev_layer_1).T.dot(layer_1_delta) synapse_0_update += X.T.dot(layer_1_delta) future_layer_1_delta = layer_1_delta synapse_0 += synapse_0_update * alpha synapse_1 += synapse_1_update * alpha synapse_h += synapse_h_update * alpha synapse_0_update *= 0 synapse_1_update *= 0 synapse_h_update *= 0 # print out progress if(j % 1000 == 0): print("誤差: "+str(overallError)) print("預測: "+str(d)) print("實際: "+str(c)) out = 0 for index,x in enumerate(reversed(d)): out += x*pow(2,index) print(str(a_int) + " + " + str(b_int) + " = " + str(out)) print("------------")
142 次閱讀
|
0
個評論
更多...