import tensorflow as tf from tensorflow.keras import layers # 加载数据集 train_dataset = tf.keras.preprocessing.image_dataset_from_directory( "train", label_mode="binary", image_size=(64, 64), batch_size=32 ) test_dataset = tf.keras.preprocessing.image_dataset_from_directory( "test", label_mode="binary", image_size=(64, 64), batch_size=32 ) # 构建卷积神经网络模型 model = tf.keras.Sequential([ layers.experimental.preprocessing.Rescaling(1./255), layers.Conv2D(32, 3, activation='relu'), layers.MaxPooling2D(), layers.Conv2D(64, 3, activation='relu'), layers.MaxPooling2D(), layers.Conv2D(128, 3, activation='relu'), layers.MaxPooling2D(), layers.Flatten(), layers.Dropout(0.5), layers.Dense(1) ]) # 编译模型 model.compile(optimizer='adam', loss=tf.keras.losses.BinaryCrossentropy(from_logits=True), metrics=['accuracy']) # 训练模型 model.fit(train_dataset, validation_data=test_dataset, epochs=10) # 测试模型 test_loss, test_acc = model.evaluate(test_dataset) print('Test accuracy:', test_acc)
tf.keras.preprocessing.image_dataset_from_directory 関数を使用してトレーニングの画像データをロードします。セットとテストセット。次に、複数の畳み込み層、プーリング層、全結合層を含む畳み込みニューラル ネットワーク モデルを構築しました。モデルの最後の層はバイナリ分類層で、写真が猫なのか犬なのかを判断するために使用されます。最後に、
model.fit 関数を使用してモデルをトレーニングし、
model.evaluate 関数を使用してテスト セットでのモデルのパフォーマンスをテストします。
Dropout レイヤーを追加することで、過学習の可能性を減らします。この方法により、モデルの汎化能力をある程度向上させることができます。
Dropout 層を使用して汎化能力の問題に対処しましたが、これは可能な方法にすぎず、具体的な方法の選択は実際の状況と状況に基づいて決定される必要があります。データの特性。
以上が機械学習モデルの汎化能力の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。