Python 什么是<;培训样本>;及<;验证样本>;什么意思?
我从Github获得了这段代码,它是一种开源的青光眼检测机器学习算法,使用卷积网络将视网膜图像分为是/否青光眼:Python 什么是<;培训样本>;及<;验证样本>;什么意思?,python,machine-learning,syntax-error,conv-neural-network,Python,Machine Learning,Syntax Error,Conv Neural Network,我从Github获得了这段代码,它是一种开源的青光眼检测机器学习算法,使用卷积网络将视网膜图像分为是/否青光眼: from keras.preprocessing.image import ImageDataGenerator from keras.models import Model from keras.layers import Input, Conv2D, MaxPooling2D, GlobalAveragePooling2D from keras.layers import Bat
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Model
from keras.layers import Input, Conv2D, MaxPooling2D, GlobalAveragePooling2D
from keras.layers import BatchNormalization, Activation, Dropout, Flatten, Dense
from keras import backend as K
from keras import optimizers
from keras.callbacks import ModelCheckpoint, ReduceLROnPlateau
from imgaug import augmenters as iaa
img_width, img_height = 256, 256
input_shape = (img_width, img_height, 3)
train_data_dir = "data/train"
validation_data_dir = "data/validation"
nb_train_samples = <training samples>
nb_validation_samples = <validation samples>
batch_size = 16
epochs = 100
input = Input(shape=input_shape)
block1 = BatchNormalization(name='norm_0')(input)
# Block 1
block1 = Conv2D(8, (3,3), name='conv_11', activation='relu')(block1)
block1 = Conv2D(16, (3,3), name='conv_12', activation='relu')(block1)
block1 = Conv2D(32, (3,3), name='conv_13', activation='relu')(block1)
block1 = Conv2D(64, (3,3), name='conv_14', activation='relu')(block1)
block1 = MaxPooling2D(pool_size=(2, 2))(block1)
block1 = BatchNormalization(name='norm_1')(block1)
block1 = Conv2D(16, 1)(block1)
# Block 2
block2 = Conv2D(32, (3,3), name='conv_21', activation='relu')(block1)
block2 = Conv2D(64, (3,3), name='conv_22', activation='relu')(block2)
block2 = Conv2D(64, (3,3), name='conv_23', activation='relu')(block2)
block2 = Conv2D(128, (3,3), name='conv_24', activation='relu')(block2)
block2 = MaxPooling2D(pool_size=(2, 2))(block2)
block2 = BatchNormalization(name='norm_2')(block2)
block2 = Conv2D(64, 1)(block2)
# Block 3
block3 = Conv2D(64, (3,3), name='conv_31', activation='relu')(block2)
block3 = Conv2D(128, (3,3), name='conv_32', activation='relu')(block3)
block3 = Conv2D(128, (3,3), name='conv_33', activation='relu')(block3)
block3 = Conv2D(64, (3,3), name='conv_34', activation='relu')(block3)
block3 = MaxPooling2D(pool_size=(2, 2))(block3)
block3 = BatchNormalization(name='norm_3')(block3)
# Block 4
block4 = Conv2D(64, (3,3), name='conv_41', activation='relu')(block3)
block4 = Conv2D(32, (3,3), name='conv_42', activation='relu')(block4)
block4 = Conv2D(16, (3,3), name='conv_43', activation='relu')(block4)
block4 = Conv2D(8, (2,2), name='conv_44', activation='relu')(block4)
block4 = MaxPooling2D(pool_size=(2, 2))(block4)
block4 = BatchNormalization(name='norm_4')(block4)
block4 = Conv2D(2, 1)(block4)
block5 = GlobalAveragePooling2D()(block4)
output = Activation('softmax')(block5)
model = Model(inputs=[input], outputs=[output])
model.summary()
model.compile(loss="categorical_crossentropy", optimizer=optimizers.Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False), metrics=["accuracy"])
# Initiate the train and test generators with data Augumentation
sometimes = lambda aug: iaa.Sometimes(0.6, aug)
seq = iaa.Sequential([
iaa.GaussianBlur(sigma=(0 , 1.0)),
iaa.Sharpen(alpha=1, lightness=0),
iaa.CoarseDropout(p=0.1, size_percent=0.15),
sometimes(iaa.Affine(
scale={"x": (0.8, 1.2), "y": (0.8, 1.2)},
translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)},
rotate=(-30, 30),
shear=(-16, 16)))
])
train_datagen = ImageDataGenerator(
rescale=1./255,
preprocessing_function=seq.augment_image,
horizontal_flip=True,
vertical_flip=True)
test_datagen = ImageDataGenerator(
rescale=1./255,
horizontal_flip=True,
vertical_flip=True)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode="categorical")
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_height, img_width),
class_mode="categorical")
checkpoint = ModelCheckpoint("f1.h5", monitor='acc', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)
reduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1, patience=2, verbose=0, mode='auto', cooldown=0, min_lr=0)
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size,
callbacks=[checkpoint, reduce_lr]
)
来自keras.preprocessing.image导入ImageDataGenerator
从keras.models导入模型
从keras.layers导入输入、Conv2D、maxpoolig2d、globalaveragepoolig2d
从keras.layers导入批次标准化、激活、退出、展平、致密
从keras导入后端为K
来自keras导入优化器
从keras.callbacks导入模型检查点,reducelRon
从imgaug进口增强器作为iaa
img_宽度,img_高度=256,256
输入形状=(img\u宽度,img\u高度,3)
列车数据目录=“数据/列车”
验证\u数据\u dir=“数据/验证”
nb_系列样品=
nb_验证_样本=
批量大小=16
纪元=100
输入=输入(形状=输入\形状)
block1=BatchNormalization(name='norm_0')(输入)
#第一区
block1=Conv2D(8,(3,3),name='conv_11',activation='relu')(block1)
block1=Conv2D(16,(3,3),name='conv_12',activation='relu')(block1)
block1=Conv2D(32,(3,3),name='conv_13',activation='relu')(block1)
block1=Conv2D(64,(3,3),name='conv_14',activation='relu')(block1)
block1=MaxPoolig2D(池大小=(2,2))(block1)
block1=BatchNormalization(name='norm_1')(block1)
block1=Conv2D(16,1)(block1)
#第2区
block2=Conv2D(32,(3,3),name='conv_21',activation='relu')(block1)
block2=Conv2D(64,(3,3),name='conv_22',activation='relu')(block2)
block2=Conv2D(64,(3,3),name='conv_23',activation='relu')(block2)
block2=Conv2D(128,(3,3),name='conv_24',activation='relu')(block2)
block2=MaxPoolig2D(池大小=(2,2))(block2)
block2=BatchNormalization(name='norm_2')(block2)
block2=Conv2D(64,1)(block2)
#第3区
block3=Conv2D(64,(3,3),name='conv_31',activation='relu')(block2)
block3=Conv2D(128,(3,3),name='conv_32',activation='relu')(block3)
block3=Conv2D(128,(3,3),name='conv_33',activation='relu')(block3)
block3=Conv2D(64,(3,3),name='conv_34',activation='relu')(block3)
block3=MaxPoolig2D(池大小=(2,2))(block3)
block3=BatchNormalization(name='norm_3')(block3)
#第4区
block4=Conv2D(64,(3,3),name='conv_41',activation='relu')(block3)
block4=Conv2D(32,(3,3),name='conv_42',activation='relu')(block4)
block4=Conv2D(16,(3,3),name='conv_43',activation='relu')(block4)
block4=Conv2D(8,(2,2),name='conv_44',activation='relu')(block4)
block4=MaxPoolig2D(池大小=(2,2))(block4)
block4=BatchNormalization(name='norm_4')(block4)
block4=Conv2D(2,1)(block4)
block5=globalaveragepoolig2d()(block4)
输出=激活('softmax')(块5)
模型=模型(输入=[输入],输出=[输出])
model.summary()
model.compile(loss=“categorical_crossentropy”,optimizer=optimizers.Adam(lr=0.0001,beta_1=0.9,beta_2=0.999,epsilon=None,decay=0.0,amsgrad=False),metrics=[“精度”])
#使用数据预告启动列车和测试发电机
有时=lambda-aug:iaa.有时(0.6,aug)
顺序=iaa.顺序([
iaa.GaussianBlur(西格玛=(0,1.0)),
iaa.锐化(α=1,亮度=0),
iaa.辍学率(p=0.1,大小百分比=0.15),
有时(iaa.Affine)(
比例={“x”:(0.8,1.2),“y”:(0.8,1.2)},
转换百分比={“x”:(-0.2,0.2),“y”:(-0.2,0.2)},
旋转=(-30,30),
剪力=(-16,16)))
])
列车\数据发生器=图像数据发生器(
重新缩放=1./255,
预处理函数=序列增强图像,
水平翻转=真,
垂直(翻转=真)
test_datagen=ImageDataGenerator(
重新缩放=1./255,
水平翻转=真,
垂直(翻转=真)
train_generator=来自目录的train_datagen.flow_(
列车数据目录,
目标尺寸=(图像高度、图像宽度),
批次大小=批次大小,
class_mode=“分类”)
验证\u生成器=来自\u目录的测试\u datagen.flow\u(
验证\u数据\u目录,
目标尺寸=(图像高度、图像宽度),
class_mode=“分类”)
检查点=模式检查点(“f1.h5”,监视器='acc',详细信息=1,保存最佳值仅=True,保存权重仅=False,模式='auto',期间=1)
reduce\u lr=reducelronplatform(监视器='loss',系数=0.1,耐心=2,详细=0,模式='auto',冷却时间=0,最小\u lr=0)
1.2型拟合发生器(
列车发电机,
每个历元的步数=nb\U序列样本//批量大小,
时代,
验证数据=验证生成器,
验证\u步骤=nb\u验证\u样本//批次大小,
回调=[检查点,减少\u lr]
)
除了我一直得到这个错误:
File "CNN.py", line 15
nb_train_samples = <training samples>
^
SyntaxError: invalid syntax
文件“CNN.py”,第15行
nb_系列样品=
^
SyntaxError:无效语法
我应该用什么替换
和
以避免出现此错误?除此之外,代码的其余部分也可以工作
谢谢大家,Satya我不知道如何用代码来填充,但我可以告诉大家什么是培训和验证样本 训练样本是用于训练模型的数据。模型学习为特定样本提供一些输出。但我们并不是真的想教模型只识别样本,而是希望识别“模式” 这就是我们使用验证数据的原因。确保该模型不仅适用于用于学习的样本,而且适用于“尚未看到”的样本
您的脚本似乎希望每个示例都具有(256256,3)的结构,但负责加载该数据的代码仍然缺失。我不知道如何用代码来填充,但我可以告诉您哪些是培训和验证示例 训练样本是用于训练模型的数据。模型学习为特定样本提供一些输出。但我们真的不想这么做