2017-12-24 13 views
0
import graphlab as gl 
from graphlab import mxnet as mx 

# Define the network symbol, equivalent to linear regression 
net = mx.symbol.Variable('data') 
net = mx.symbol.FullyConnected(data=net, name='fc1', num_hidden=1) 
net = mx.symbol.LinearRegressionOutput(data=net, name='lr') 

# Load data into SFrame and normalize features 
sf = gl.SFrame.read_csv('https://static.turi.com/datasets/regression/houses.csv') 
features = ['tax', 'bedroom', 'bath', 'size', 'lot'] 
for f in features: 
    sf[f] = sf[f] - sf[f].mean() 
    sf[f] = sf[f]/sf[f].std() 

# Prepare the input iterator from SFrame 
# `data_name` must match the first layer's name of the network. 
# `label_name` must match the last layer's name plus "_label". 
dataiter = mx.io.SFrameIter(sf, data_field=features, label_field='price', 
         data_name='data', label_name='lr_label', 
         batch_size=1) 

# Train the network 
model = mx.model.FeedForward.create(symbol=net, X=dataiter, num_epoch=20, 
           learning_rate=1e-2, 
           eval_metric='rmse') 

# Make prediction 
model.predict(dataiter) 

enter image description heremxnet graphlabでテストrmseを予測する方法は? model.evaluate(dataiterは)私は私のデータセット内のパラメータを予測するために、数行のコードを書かれている

動作しませんが、写真のようにそれが唯一の列車データのRMSEを与えます。テストデータ用にRMSEを表示する方法は何でしょうか? model.evaluate(dataiter)は機能しません。

+0

画像を使用する代わりにコードを貼り付けてください。 – Micho

+0

コード@Michoを掲載しました –

答えて

1

mx.modelは、mx.moduleで置き換えられました。最終的には、mx.gluonインターフェイスが優先されました。 mx.moduleを使用する場合は、評価メトリックをeval_metric、評価データをeval_data(DataIterにする必要があります)と指定できます。そして例は次のようになります。

mod = mx.mod.Module(symbol=net, 
        context=mx.cpu(), 
        data_names=['data'], 
        label_names=['softmax_label']) 

mod.fit(train_data=train_iter, 
     eval_data=val_iter, 
     eval_metric='rmse', 
     num_epoch=10) 

これで出力に必要なメトリックが得られます。

INFO:root:Epoch[0] Train-RMSE=0.364625 
INFO:root:Epoch[0] Time cost=0.388 
INFO:root:Epoch[0] Validation-RMSE=0.557250 
... 
関連する問題