在Theano中,可以通過定義計算圖來訓練和推理模型。下面是一個簡單的示例:
定義模型結構:首先,需要定義模型的輸入、參數和輸出。例如,可以使用Theano的T.matrix
來定義輸入和輸出的矩陣。然后,定義模型的參數,例如權重和偏置。
定義損失函數:在訓練模型時,需要定義損失函數來衡量模型的性能。常見的損失函數包括均方誤差(MSE)和交叉熵損失。
定義優化算法:選擇一個優化算法來最小化損失函數,例如隨機梯度下降(SGD)或Adam。
編譯函數:使用Theano的function
來編譯訓練和推理函數。在訓練函數中,將輸入數據傳入模型并計算損失函數,然后使用優化算法更新模型參數。在推理函數中,將輸入數據傳入模型并輸出預測結果。
訓練和推理:使用訓練函數來訓練模型,并使用推理函數來對新數據進行預測。
下面是一個簡單的示例代碼:
import theano
import theano.tensor as T
import numpy as np
# 定義模型結構
X = T.matrix('X')
Y = T.matrix('Y')
W = theano.shared(np.random.randn(2, 2), name='W')
b = theano.shared(np.zeros(2), name='b')
# 定義模型
Y_pred = T.dot(X, W) + b
# 定義損失函數
loss = T.mean((Y_pred - Y) ** 2)
# 定義優化算法
learning_rate = 0.01
updates = [(W, W - learning_rate * T.grad(loss, W)),
(b, b - learning_rate * T.grad(loss, b))]
# 編譯函數
train = theano.function(inputs=[X, Y], outputs=loss, updates=updates)
predict = theano.function(inputs=[X], outputs=Y_pred)
# 訓練模型
X_train = np.array([[0, 1], [2, 3]])
Y_train = np.array([[1, 3], [5, 7]])
for i in range(100):
loss = train(X_train, Y_train)
print('Epoch {}, Loss: {}'.format(i, loss))
# 推理模型
X_test = np.array([[4, 5], [6, 7]])
Y_pred = predict(X_test)
print('Predictions:', Y_pred)
在這個示例中,我們定義了一個簡單的線性模型,并使用隨機梯度下降算法訓練模型。最后,使用訓練好的模型對新數據進行預測。