データローダー
1. データの前処理
DataLoader は、データをモデルにフィードする前にデータを前処理する必要があります。前処理には、データの拡張、正規化、トリミング、スケーリングなどの操作が含まれる場合があります。これらの操作により、モデルのパフォーマンスと精度を向上させることができます。点群データを処理する場合、最も遠い点を固定数の点にダウンサンプリングできます。
2.タグファイルを読み込む
私 1 2 3
愛 45 6
パイソン
matrix_file = open("D:\py_code\w123.txt", 'r', encoding='utf-8') # 打开文件
lines = matrix_file.readlines() # 读取文件中的所有行
print(lines)
print(len(lines))
结果:
['我 1 2 3\n', '爱 45 6\n', 'python']
3
3. データセットの分割
データセットのトレーニングセット、テストセット、全データセットのファイルリストを生成し、txtファイルとして保存しますトレーニングセットの割合は自分で設定可能
4. データクラスのロード
MyDataset(Dataset) クラスには、__init__()、__len__()、__getitem__() などの関数が含まれています。
データセット: 親クラス、すべての開発者がトレーニングとテストに使用するすべてのデータ セットのテンプレートまたは抽象化。このクラスは抽象クラスです。データとラベルの間のマッピングを確立したい場合は、すべてのデータ セットがこのクラスを継承する必要があります。すべてサブクラスは、インデックス値に従って各データとそれに対応するラベルを取得する __getitem__ メソッドを書き換える必要があります。サブクラスは、データ セットのサイズを返すように __len__ メソッドを書き換えることもできます
MyDataset: 特定のデータセットであるサブクラスは、親クラスのすべてのメソッドとプロパティを継承します。
データセットを書き換えるにはどうすればよいですか?
[ディープラーニング] PyTorch Dataset クラスの使用法と分析例 - Zhihu (zhihu.com)
パスの組み立て方法、パス内のファイル名を取得する方法、特定のデータオブジェクトを取得する方法を明確にした後、メソッドを書き換えます。
__init() はすべてのファイル名をデータ ディレクトリに保存します。
__len__ データセットの長さを取得します
__getitem__() はデータ セット全体ではなくデータ項目を返すため、インデックスをデータ セット内の特定のデータに対応させることができます。
from torch.utils.data import Dataset
class MyDataset(Dataset):
def __init__(self):#一个函数中的变量是不能拿到另外一个函数中使用的,self可以当做类中的全局变量
print("1")
def __len__(self):
print("2")
def __getitem__(self,idx):
print("3")
dataset = MyDataset()#会自动调用__init__方法
结果:
1
5. データローダーの作成
data = MyDataset()#实例化
DataLoader = torch.utils.data.DataLoader(data, batch_size=64, shuffle=True)
サンプルをbatch_size (各バッチに含まれるサンプルの数)に従ってバッチに分割し、各エポックの開始時にデータをランダムにシャッフルします(すべてのサンプルが走査されます)。
訓練
def parse_args()
パラメーターには、batch_size/model/epoch/learning_rate/gpu/optimizier/data_path/result_savepath/check_savepath/log_dir/decay_rate などが含まれます。
def valid(モデル、ローダー)
検証セットでネットワーク モデルのパフォーマンスをテストし、精度を返します。
3.def main(args)
どの GPU で実行するかを設定する
ディレクトリを作成する
トレーニングプロセス中にいくつかの情報を記録するようにログファイルを設定します。
トレーニング データとテスト データをロードする
ロードモデル
学習率を変更する(メッセージ6件) [ディープラーニング] 学習率(学習率)_ディープラーニングの学習率_JNingWeiのブログ-CSDNブログ
トレーニング: エポックごとに 1 回トレーニングします
検証セットを使用して検証します。検証セットは、トレーニングの各エポック後のネットワーク パフォーマンスを確認するために特別に使用され、テスト セットは検証セット (7 メッセージ) の代わりに使用できます。検証セット; 検証セットをトレーニング セットから取得することはできません。(相互検証、リーブワンアウト法)_検証セットをテストセットとして使用できるか_doubleslow;のブログ - CSDNブログ
テスト
def parse_args()
パラメーターには、batch_size/model/gpu/data_path/save_path/pth_path などが含まれます。
2.def main(args)
データ保存ディレクトリを作成する
ロードテストデータ
ローディングモデル: トレーニングによって得られた最適なモデル