paddle2.3 は回帰モデルを実装します

        最近はAIの研究をしており、知能解析や自動解析機能をやろうと思っているのですが、近年はディープラーニングが非常に盛んになり、大手企業が続々と参入し、フレームワークを開発したり、論文を発表したりしています。非常に活気がありますが、アプリケーションにはまださまざまなニーズがあり、業界の人々はゆっくりとそれに気付くでしょう.

フレーム選択

        繰り返し作業のフレームワークはすでにいくつか実装されているため、深層学習のフレームワークを作成することが不可欠です.独自のニューラル ネットワークを構築し、トレーニング用のデータを準備するだけです。現在、主流のフレームワークには pytorch と tensorflow が含まれます. 中国では、Baidu に paddlepaddle があり、Huawei には mindspore があります. 中国で比較的早く開始されたフレームワークとして、paddle は非常に成熟したエコロジーと API を備えています. ドキュメントは非常に完全であり、 pytorch と tensorflow の利点、動的グラフと静的グラフの組み合わせ、分散トレーニングのサポートを同時にサポートしているため、パドルを選択しました。

        以下は、パドルで実装した回帰の例です

import paddle
from paddle import nn
import numpy as np
from paddle import to_tensor
import matplotlib.pyplot as plt
from paddle.nn.functional import square_error_cost as sqrc
from visualdl import LogWriter
# 创建 LogWriter 对象,指定 logdir 参数,如果指定路径不存在将会创建一个文件夹
logwriter = LogWriter(logdir='./paddlets_test/reg')



x = np.linspace(0,1,100).astype("float32")
y = np.sin(np.pi*x)+0.3

plt.scatter(x,y)
#增加数据维度,变成N*1的形状,深度学习一般至少是二维数据
x_data = x[:,None]
y_data = y[:,None]


print(x_data.dtype)
print(y_data.dtype)
mynet_Sequential = nn.Sequential(
    nn.Linear(1, 32),
    nn.Tanh(),
    nn.Linear(32, 32),
    nn.Tanh(),
    nn.Linear(32, 32),
    nn.Tanh(),
    nn.Linear(32, 10),
    nn.Tanh(),
    nn.Linear(10, 1),

)
#mynet_Sequential.train()
x_data_train = to_tensor(x_data)
y_data_train = to_tensor(y_data)
loss_func =  paddle.nn.loss.MSELoss() #损失函数为均方差
optimizer = paddle.optimizer.SGD(learning_rate=0.01,parameters=mynet_Sequential.parameters())


for pass_id in range(5000):
    out = mynet_Sequential(x_data_train)
    loss = loss_func(out,y_data_train)
    logwriter.add_scalar("train_avg_loss", value=loss.numpy(), step=pass_id)
    logwriter.add_histogram("fc_weight", values=mynet_Sequential.parameters()[1].numpy(), step=pass_id)
    loss.backward()
    optimizer.minimize(loss)
    optimizer.step()
    optimizer.clear_grad()
    if pass_id %1000 == 0:
        print("pass:%d, Cost:%.5f" % (pass_id,loss))

paddle.jit.save(mynet_Sequential,"./paddlets_test/model",[paddle.static.InputSpec([-1,1])])
logwriter.add_hparams(hparams_dict={'lr': 0.01, 'batch_size':100,'opt': 'sgd'},
                           metrics_list=['train_avg_loss','test_avg_loss','test_avg_acc'])

y_test = mynet_Sequential(x_data_train)
y_value = y_test.numpy()
#print(y_value)
y_1d = [item[0] for item in y_value]
plt.plot(x_data,y_1d,color='r')

                                      

 5000回のトレーニング後、フィッティング効果は悪くないことがわかります。

ログはトレーニング プロセス中に追加されるため、ビジュアル DL を使用して、ネットワーク構造、パラメーター、損失などのトレーニング インジケーターを視覚化することもできます。

損失

 

 ネットワーク構造

パラメータ

一般的に、パドル体験は悪くなく、ツールは完璧で、API は使いやすく、特に技術的な境界 (国境) が明確になり、ローカリゼーションがますます重要になっている現在、興味のある友人は試してみることができます。それ。

Je suppose que tu aimes

Origine blog.csdn.net/zy1620454507/article/details/128834252
conseillé
Classement