Python 什么是<;培训样本>;及<;验证样本>;什么意思?

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

我从Github获得了这段代码,它是一种开源的青光眼检测机器学习算法,使用卷积网络将视网膜图像分为是/否青光眼:

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)的结构,但负责加载该数据的代码仍然缺失。

我不知道如何用代码来填充,但我可以告诉您哪些是培训和验证示例

训练样本是用于训练模型的数据。模型学习为特定样本提供一些输出。但我们真的不想这么做