[問題] Tensorflow取weights

作者: chinsun   2018-11-16 12:30:51
大家好
我正在FPGA上寫一個電路,要用它來做機器學習的預測
但是我只會寫電路,對Python還有機器學習的認識很淺QQ
其中需要使用Tensoeflow來產生一些參數和驗證
我參考了這個網站來訓練神經元
https://www.tensorflow.org/tutorials/keras/basic_classification
以下是我的部份程式碼
想請問要如何從這個model中取出weights?
model = keras.Sequential([
keras.layers.MaxPooling1D(pool_size=2, strides=2, padding='valid',
input_shape=(28,28)),
keras.layers.Flatten(),
keras.layers.Dense(196, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer=tf.train.AdamOptimizer(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5)
因為電路的限制,input沒辦法用28*28,所以我加了一個MaxPool
讓input 縮小為14*14,我知道MaxPool可能不適合這樣用QQ
也想問問有沒有其他比較適合的方法
我希望可以從程式碼中取出weights,可以讓我直接用到電路裡
我找到了一個function如下
for layer in model.layers:
weights = layer.get_weights()
取出的weights[0]是196*10的Array,內容都是正負0.0x 的數字
weights[1]則是1*10的Array
我把weights[0]當作是這個model產生的weights實現到電路中
但結果是錯的,而且每次產生的weight放進去結果都不一樣
所以我在想是不是我取出的weight並不是model最後使用的呢QQ
謝謝!
作者: djshen (djshen)   2018-11-16 12:52:00
你有train?喔我的意思是在keras上train出來的東西是對的?
作者: tsoahans (ㄎㄎ)   2018-11-16 14:56:00
你有把relu和softmax實作進去嗎?
作者: chinsun   2018-11-16 15:03:00
請問實作進去是指什麼意思呢?我以為model= 那邊寫進去,compile就會執行到了
作者: tsoahans (ㄎㄎ)   2018-11-16 15:08:00
應該是我搞錯了 我以為電路裡面不是用python,而是用其他語言自己實作
作者: Kazimir (Kazimir)   2018-11-16 16:19:00
這個weights 看來沒問題 我覺得問題應該出在其他地方不然你可以確認看看這個取出來的矩陣平均值和標準差
作者: yoyololicon (蘿莉大好)   2018-11-17 07:02:00
weights[1]是bias 要放吧?

Links booklink

Contact Us: admin [ a t ] ucptt.com