keras 중국어 문서 노트 10 - 데이터 사전 처리
채우기 시퀀스padsequences
keras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype='int32',
padding='pre', truncating='pre', value=0.)
길이 nbsamples 시퀀스(nb samples, nb timesteps) 2D numpy array로 변환됩니다.매개 변수 maxlen을 제공하면 nbtimesteps=maxlen, 그렇지 않으면 그 값이 가장 긴 서열의 길이입니다.길이보다 짧은 다른 시퀀스는 뒤에 0을 채워 길이를 맞춥니다.nb 보다 길다timesteps의 시퀀스가 목표 길이에 맞게 잘립니다.padding과 차단이 발생하는 위치는 각각 padding과truncating에 달려 있습니다.
점프 skipgrams
keras.preprocessing.sequence.skipgrams(sequence, vocabulary_size, window_size=4, negative_samples=1., shuffle=True, categorical=False, sampling_table=None)
skipgrams는 한 단어의 벡터 아래에 표시된 서열을 다음tuple로 전환합니다.
[Tips] 위키백과에 따르면 n-gram은 주어진 서열에 연속적인 n항이 생기는 것을 대표하고 서열 문장이 될 때 각 항이 단어이다. 이때 n-gram은 shingles라고도 부른다.한편, skip-gram의 홍보에 따르면 skip-gram이 생성한 n항의 하위 서열에서 각 항목은 원래 서열에서 연속되지 않고 k자를 뛰어넘었다.예를 들어, 문장의 경우
“the rain in Spain falls mainly on the plain”
그 2 -grams는 하위 시퀀스 집합입니다.
the rain,rain in,in Spain,Spain falls,falls mainly,mainly on,on the,the plain
그 1-skip-2-grams는 하위 서열 집합이다.
the in, rain Spain, in falls, Spain mainly, falls on, mainly the, on plain. 샘플링 테이블 가져오기makesampling_table
keras.preprocessing.sequence.make_sampling_table(size, sampling_factor=1e-5)
이 함수는skipgrams에 필요한 인자sampling 를 생성하는 데 사용됩니다table.이것은 사이즈 길이의 벡터입니다.samplingtable[i]는 샘플링을 통해 데이터가 집중되는 i에서 흔히 볼 수 있는 단어의 확률을 대표한다(균형기를 위해 자주 등장하는 단어일수록 낮은 확률로 뽑아야 한다)
텍스트 미리 처리
문장 분할textto_word_sequence
keras.preprocessing.text.text_to_word_sequence(text,filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t
',lower=True,split=" ")
이 함수는 한 문장을 단어로 구성된 목록으로 나눈다
원-hot 인코딩
keras.preprocessing.text.one_hot(text,n,filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t
',lower=True,split=" ")
이 함수는 텍스트를 원-hot 형식의 코드로 인코딩합니다. 즉, 사전에 있는 단어만 기록합니다.
[Tips] 정의상 사전의 길이가 n일 때 모든 단어는 n의 벡터를 형성해야 한다. 그 중에서 단어 자체만 사전에 표시된 위치가 1이고 나머지는 0이다. 이를 원-hot이라고 한다.
편의를 위해 함수는 여기에'1'의 위치, 즉 사전의 단어의 하단만 기록한다.
특징 해시해싱trick
keras.preprocessing.text.hashing_trick(text,n,hash_function=None,filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t
',lower=True,split=' ')
텍스트를 고정된 크기의 해시 공간의 색인 서열로 변환하기
분사기 Tokenizer
keras.preprocessing.text.Tokenizer(num_words=None,filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t
',lower=True,split=" ",char_level=False)
Tokenizer는 양적 텍스트로 변환하거나 텍스트를 서열(즉 단어가 사전에 표시된 목록으로 1부터 계산)으로 변환하는 클래스입니다.
이미지 프리 프로세싱
이미지 빌더 ImageDataGenerator
keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
rotation_range=0.,
width_shift_range=0.,
height_shift_range=0.,
shear_range=0.,
zoom_range=0.,
channel_shift_range=0.,
fill_mode='nearest',
cval=0.,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format=K.image_data_format())
batch의 이미지 데이터를 생성하여 실시간 데이터 향상을 지원합니다.훈련할 때 이 함수는 규정된 epoch 횟수에 도달할 때까지 무한으로 데이터를 생성합니다.
예.
사용하다.flow ()의 예
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
# compute quantities required for featurewise normalization
# (std, mean, and principal components if ZCA whitening is applied)
datagen.fit(x_train)
# fits the model on batches with real-time data augmentation:
model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),
steps_per_epoch=len(x_train), epochs=epochs)
# here's a more "manual" example
for e in range(epochs):
print 'Epoch', e
batches = 0
for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):
loss = model.train(x_batch, y_batch)
batches += 1
if batches >= len(x_train) / 32:
# we need to break the loop by hand because
# the generator loops indefinitely
break
사용하다.flow_from_directory 의 예
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=32,
class_mode='binary')
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=50,
validation_data=validation_generator,
validation_steps=800)
그림과 mask를 동시에 변환합니다
# we create two instances with the same arguments
data_gen_args = dict(featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=90.,
width_shift_range=0.1,
height_shift_range=0.1,
zoom_range=0.2)
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)
# Provide the same seed and keyword arguments to the fit and flow methods
seed = 1
image_datagen.fit(images, augment=True, seed=seed)
mask_datagen.fit(masks, augment=True, seed=seed)
image_generator = image_datagen.flow_from_directory(
'data/images',
class_mode=None,
seed=seed)
mask_generator = mask_datagen.flow_from_directory(
'data/masks',
class_mode=None,
seed=seed)
# combine generators into one which yields image and masks
train_generator = zip(image_generator, mask_generator)
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=50)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.