Вы можете использовать функцию mean
из бэкэнда Keras и обернуть ее слоем Lambda
для усреднения вложений по словам.
import keras
from keras.layers import Embedding
from keras.models import Sequential
import numpy as np
# Set parameters
vocab_size=1000
max_length=10
# Generate random embedding matrix for sake of illustration
embedding_matrix = np.random.rand(vocab_size,300)
model = Sequential()
model.add(Embedding(vocab_size, 300, weights=[embedding_matrix],
input_length=max_length, trainable=False))
# Average the output of the Embedding layer over the word dimension
model.add(keras.layers.Lambda(lambda x: keras.backend.mean(x, axis=1)))
model.summary()
Дает:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_6 (Embedding) (None, 10, 300) 300000
_________________________________________________________________
lambda_6 (Lambda) (None, 300) 0
=================================================================
Total params: 300,000
Trainable params: 0
Non-trainable params: 300,000
Кроме того, вы можете использовать слой Lambda
, чтобы обернуть произвольные функции, которые работают с тензорами в слое Keras, и добавить их в вашу модель. Если вы используете бэкэнд TensorFlow, у вас также есть доступ к тензорным операциям:
import tensorflow as tf
model = Sequential()
model.add(Embedding(vocab_size, 300, weights=[embedding_matrix],
input_length=max_length, trainable=False))
model.add(keras.layers.Lambda(lambda x: tf.reduce_mean(x, axis=1)))
# same model as before
Это может помочь реализовать больше пользовательских функций усреднения.
Вы могли использовать метод
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target
withString:(NSString *)replacement
... для получения новой строки с замененной подстрокой (См. NSString
документация для других)
использование В качестве примера
NSString *str = @"This is a string";
str = [str stringByReplacingOccurrencesOfString:@"string"
withString:@"duck"];
NSString
объекты неизменны (они не могут быть изменены), но существует изменяемый подкласс, NSMutableString
, который дает Вам несколько методов для замены символов в строке. Это - вероятно, Ваш лучший выбор.