在XGBoost指南的链接上,
bst.save_model('0001.model')
bst.dump_model('dump.raw.txt') # dump model
bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
bst = xgb.Booster({'nthread':4}) #init model
bst.load_model("model.bin") # load data
我的问题是:
save_model&之间有什么区别dump_model?'0001.model'和'dump.raw.txt','featmap.txt'?之间的区别是什么?model.bin与要保存的名称不同0001.model?model_A和model_B,我想保存这两种模式以供将来使用,这save和load我应该使用功能?你能帮忙展示清楚的过程吗?目前还不清楚是什么metrics(如下面的代码所示).他们究竟在评估什么?为什么我们需要在model?中定义它们?为什么我们可以在一个模型中拥有多个指标?更重要的是,这背后的机制是什么?任何科学参考也值得赞赏.
model.compile(loss='mean_squared_error',
optimizer='sgd',
metrics=['mae', 'acc'])
Run Code Online (Sandbox Code Playgroud) 是否有可能有两个fit_generator?
我正在创建一个带有两个输入的模型,模型配置如下所示.
标签Y对X1和X2数据使用相同的标签.
将继续发生以下错误.
检查模型输入时出错:传递给模型的Numpy数组列表不是模型预期的大小.预期看到2个阵列,但是得到以下1个阵列的列表:[array([[[[0.75686276,0.75686276,0.75686276],[0.75686276,0.75686276,0.75686276],[0.75686276,0.75686276,0.75686276],.... ..,[0.65882355,0.65882355,0.65882355 ...
我的代码看起来像这样:
def generator_two_img(X1, X2, Y,batch_size):
generator = ImageDataGenerator(rotation_range=15,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
genX1 = generator.flow(X1, Y, batch_size=batch_size)
genX2 = generator.flow(X2, Y, batch_size=batch_size)
while True:
X1 = genX1.__next__()
X2 = genX2.__next__()
yield [X1, X2], Y
"""
.................................
"""
hist = model.fit_generator(generator_two_img(x_train, x_train_landmark,
y_train, batch_size),
steps_per_epoch=len(x_train) // batch_size, epochs=nb_epoch,
callbacks = callbacks,
validation_data=(x_validation, y_validation),
validation_steps=x_validation.shape[0] // batch_size,
`enter code here`verbose=1)
Run Code Online (Sandbox Code Playgroud) 我对Keras很新.我训练了一个模型,并希望预测存储在子文件夹中的一些图像(比如用于训练).为了测试,我想预测7个类(子文件夹)中的2个图像.下面的test_generator可以看到14张图片,但我得到了196张预测.哪里出错了?非常感谢!
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
test_dir,
target_size=(200, 200),
color_mode="rgb",
shuffle = "false",
class_mode='categorical')
filenames = test_generator.filenames
nb_samples = len(filenames)
predict = model.predict_generator(test_generator,nb_samples)
Run Code Online (Sandbox Code Playgroud) 我正在尝试理解注意力模型并自己构建一个。经过多次搜索,我发现了这个网站,它有一个用 keras 编码的注意力模型,而且看起来也很简单。但是当我试图在我的机器上构建相同的模型时,它给出了多个参数错误。错误是由于传入 class 的参数不匹配Attention。在网站的注意力类中,它要求一个参数,但它用两个参数启动注意力对象。
import tensorflow as tf
max_len = 200
rnn_cell_size = 128
vocab_size=250
class Attention(tf.keras.Model):
def __init__(self, units):
super(Attention, self).__init__()
self.W1 = tf.keras.layers.Dense(units)
self.W2 = tf.keras.layers.Dense(units)
self.V = tf.keras.layers.Dense(1)
def call(self, features, hidden):
hidden_with_time_axis = tf.expand_dims(hidden, 1)
score = tf.nn.tanh(self.W1(features) + self.W2(hidden_with_time_axis))
attention_weights = tf.nn.softmax(self.V(score), axis=1)
context_vector = attention_weights * features
context_vector = tf.reduce_sum(context_vector, axis=1)
return context_vector, attention_weights
sequence_input = tf.keras.layers.Input(shape=(max_len,), dtype='int32')
embedded_sequences = tf.keras.layers.Embedding(vocab_size, 128, input_length=max_len)(sequence_input)
lstm = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM
(rnn_cell_size,
dropout=0.3,
return_sequences=True, …Run Code Online (Sandbox Code Playgroud) 如何将Tensorflow feature_column与Keras 模型结合使用?
例如,对于Tensorflow估算器,我们可以使用Tensorflow Hub中的嵌入列:
embedded_text_feature_column = hub.text_embedding_column(
key="sentence",
module_spec="https://tfhub.dev/google/nnlm-en-dim128/1")
estimator = tf.estimator.DNNClassifier(
hidden_units=[100],
feature_columns=[embedded_text_feature_column],
n_classes=2,
optimizer=tf.train.AdamOptimizer(learning_rate=0.001))
Run Code Online (Sandbox Code Playgroud)
但是,我想使用TF Hub text_embedding_column作为Keras模型的输入.例如
net = tf.keras.layers.Input(...) # use embedding column here
net = tf.keras.layers.Flatten()
net = Dense(100, activation='relu')(net)
net = Dense(2)(net)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我在初始基础上使用VGG16网络构建了一个Sequential模型,例如:
from keras.applications import VGG16
conv_base = VGG16(weights='imagenet',
# do not include the top, fully-connected Dense layers
include_top=False,
input_shape=(150, 150, 3))
from keras import models
from keras import layers
model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
# the 3 corresponds to the three output classes
model.add(layers.Dense(3, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)
我的模型看起来像这样:
model.summary()
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Layer (type) Output Shape Param # ================================================================= vgg16 (Model) (None, 4, 4, 512) 14714688 _________________________________________________________________ flatten_1 (Flatten) (None, 8192) 0 _________________________________________________________________ dense_7 (Dense) (None, 256) 2097408 _________________________________________________________________ dense_8 (Dense) (None, 3) …
我想应用缩放sklearn.preprocessing.scale模块,该模块scikit-learn提供中心化数据集,我将用它来训练svm分类器.
然后,我如何存储标准化参数,以便我也可以将它们应用于我要分类的数据?
我知道我可以使用standarScaler但我可以以某种方式将其序列化为一个文件,以便每次我想运行分类器时我都不必适应我的数据吗?
我想将ConvLSTM和Conv2D的输出传递给Keras中的Dense Layer,使用全局平均池和flatten之间的区别是两者都适用于我的情况.
model.add(ConvLSTM2D(filters=256,kernel_size=(3,3)))
model.add(Flatten())
# or model.add(GlobalAveragePooling2D())
model.add(Dense(256,activation='relu'))
Run Code Online (Sandbox Code Playgroud) 在Keras中,您可以像这样指定一个dropout图层:
model.add(Dropout(0.5))
Run Code Online (Sandbox Code Playgroud)
但是使用GRU单元格,您可以将dropout指定为构造函数中的参数:
model.add(GRU(units=512,
return_sequences=True,
dropout=0.5,
input_shape=(None, features_size,)))
Run Code Online (Sandbox Code Playgroud)
有什么不同?一个比另一个好吗?
在Keras的文档中, 它将其添加为单独的丢失层(请参阅"使用LSTM进行序列分类")
keras ×8
python ×6
generator ×2
keras-layer ×2
tensorflow ×2
convolutional-neural-network ×1
dropout ×1
lstm ×1
save ×1
scikit-learn ×1
standardized ×1
xgboost ×1