小编tod*_*day的帖子

二进制交叉熵损失在自动编码器上如何工作?

我只使用Dense图层编写了香草自动编码器。下面是我的代码:

iLayer = Input ((784,))
layer1 = Dense(128, activation='relu' ) (iLayer)
layer2 = Dense(64, activation='relu') (layer1)
layer3 = Dense(28, activation ='relu') (layer2)
layer4 = Dense(64, activation='relu') (layer3)
layer5 = Dense(128, activation='relu' ) (layer4)
layer6 = Dense(784, activation='softmax' ) (layer5)
model = Model (iLayer, layer6)
model.compile(loss='binary_crossentropy', optimizer='adam')

(trainX, trainY), (testX, testY) =  mnist.load_data()
print ("shape of the trainX", trainX.shape)
trainX = trainX.reshape(trainX.shape[0], trainX.shape[1]* trainX.shape[2])
print ("shape of the trainX", trainX.shape)
model.fit (trainX, trainX, epochs=5, batch_size=100)
Run Code Online (Sandbox Code Playgroud)

问题:

1)softmax提供概率分布。明白了 …

machine-learning neural-network autoencoder keras cross-entropy

10
推荐指数
1
解决办法
5469
查看次数

ImageDataGenerator是否向我的数据集中添加更多图像?

我正在尝试使用Inception V3模型进行图像分类。ImageDataGeneratorKeras 是否会创建新图像并添加到我的数据集中?如果我有1000张图像,是否可以使用此功能将其翻倍到用于训练的2000张图像?有没有一种方法可以知道创建了多少图像并将这些图像输入到模型中?

python machine-learning computer-vision keras tensorflow

9
推荐指数
3
解决办法
4501
查看次数

将图层的一半滤镜设置为不可训练的keras/tensorflow

我正在尝试训练研究论文建议的模型,其中我将卷积层的一半滤波器设置为Gabor滤波器,其余是默认初始化的随机权重.通常,如果我必须将图层设置为不可训练,我将trainable属性设置为False.但是在这里我只需要冻结一层过滤器的一半,我不知道该怎么做.任何帮助将非常感激.我正在使用带有Tensorflow后端的Keras.

python neural-network conv-neural-network keras tensorflow

9
推荐指数
1
解决办法
606
查看次数

未分配时如何找到 Keras 标记器的“num_words”或词汇量大小?

因此,如果我num_words在初始化时不传递参数Tokenizer(),那么在使用它来标记训练数据集后如何找到词汇量大小?

为什么这样,我不想限制分词器词汇量的大小来了解我的 Keras 模型在没有它的情况下的表现。但随后我需要将此词汇量大小作为模型第一层定义中的参数传递。

nlp machine-learning tokenize deep-learning keras

9
推荐指数
1
解决办法
8404
查看次数

使用 DeepExplainer 时,Python 中的 SHAP 是否支持 Keras 或 TensorFlow 模型?

我目前正在使用 SHAP 包来确定功能贡献。我已经将这种方法用于 XGBoost 和 RandomForest,而且效果非常好。由于我正在处理的数据是顺序数据,我尝试使用 LSTM 和 CNN 来训练模型,然后使用 SHAP 获得特征重要性DeepExplainer;但它不断抛出错误。我得到的错误是:

AssertionError: <class 'keras.callbacks.History'> is not currently a supported model type!.
Run Code Online (Sandbox Code Playgroud)

我也附上了示例代码(LSTM)。如果有人可以帮助我,那将会很有帮助。

shap.initjs()
model = Sequential()
model.add(LSTM(n_neurons, input_shape=(X.shape[1],X.shape[2]), return_sequences=True))
model.add(LSTM(n_neurons, return_sequences=False))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
h=model.fit(X, y, epochs=nb_epochs, batch_size=n_batch, verbose=1, shuffle=True)
background = X[np.random.choice(X.shape[0],100, replace=False)]
explainer = shap.DeepExplainer(h,background)
Run Code Online (Sandbox Code Playgroud)

python deep-learning keras tensorflow shap

9
推荐指数
1
解决办法
4698
查看次数

如何在google colab上安装pydot和graphviz?

我正在尝试在google colab上绘制我的模型.

 from keras.utils import plot_model
 plot_model(model, to_file="model.png")
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

 ImportError: Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
Run Code Online (Sandbox Code Playgroud)

我安装了pydot-ng,graphviz我仍然无法解决这个错误.

python graphviz pydot keras google-colaboratory

8
推荐指数
1
解决办法
4358
查看次数

使用Keras 2.2.0将顺序模型转换为功能模型

直到Keras版本2.1.6,通过访问底层model.model,能够将顺序模型"转换"为功能模型.从版本2.2.0开始,这已不再可能.

它还能以其他方式完成吗?

(如果你想知道我为什么要做这样的事情,我正在维护一个依赖于这种转换的库.:wink :)

python keras

8
推荐指数
1
解决办法
1460
查看次数

Keras 1d卷积层如何与单词嵌入-文本分类问题一起使用?(过滤器,内核大小和所有超参数)

我目前正在使用Keras开发文本分类工具。它可以工作(工作正常,并且我的验证精度达到98.7),但是我无法确定一维卷积层如何与文本数据一起工作。

我应该使用哪些超参数?

我有以下几句话(输入数据):

  • 句子中的最大单词数:951(如果少于这个数字,则会添加填充)
  • 词汇量:〜32000
  • 句子总数(用于培训):9800
  • embedding_vecor_length:32(每个单词在单词嵌入中有多少关系)
  • batch_size:37(此问题无关紧要)
  • 标签数(类):4

这是一个非常简单的模型(我制作了更复杂的结构,但奇怪的是,它甚至在不使用LSTM的情况下也能更好地工作):

model = Sequential()
model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length))
model.add(Conv1D(filters=32, kernel_size=2, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(labels_count, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
Run Code Online (Sandbox Code Playgroud)

我的主要问题是:Conv1D层应使用哪些超参数?

model.add(Conv1D(filters=32, kernel_size=2, padding='same', activation='relu'))
Run Code Online (Sandbox Code Playgroud)

如果我有以下输入数据:

  • 字数上限:951
  • 文字嵌入尺寸:32

这是否意味着filters=32只会扫描前32个单词,而完全扫描其余的单词(kernel_size=2)?我应该将过滤器设置为951(句子中最多单词数)吗?

图片示例:

例如,这是一个输入数据: http //joxi.ru/krDGDBBiEByPJA

这是卷积层的第一步(步骤2): http

这是第二步(步骤2): http //joxi.ru/brRG699iJ3Ra1m

如果filters = 32,层重复32次?我对么?因此,我不会在句子中说第156个单词,因此这些信息会丢失吗?

python conv-neural-network keras tensorflow word-embedding

8
推荐指数
1
解决办法
2038
查看次数

复制特定层的权重 - keras

根据这个下面复制权从一个模式到另一个:

target_model.set_weights(model.get_weights())
Run Code Online (Sandbox Code Playgroud)

复制特定层的权重怎么样,这行得通吗?

model_1.layers[0].set_weights(source_model.layers[0].get_weights())
model_2.layers[0].set_weights(source_model.layers[0].get_weights())
Run Code Online (Sandbox Code Playgroud)

如果我训练model_1model_2他们会有单独的重量吗?该文档没有说明这是否get_weights进行了深层复制。如果这不起作用,如何实现?

python neural-network deep-learning keras keras-layer

8
推荐指数
1
解决办法
3977
查看次数

我如何在每个时期而不是每个批次中获得损失?

在我的理解中,epoch 是在整个数据集上任意频繁地重复运行,然后分部分处理,即所谓的批处理。每次train_on_batch计算损失后,权重都会更新,下一批将获得更好的结果。这些损失是我对神经网络质量和学习状态的指标。

在几个来源中,每个时期都会计算(并打印)损失。因此,我不确定我这样做是否正确。

目前我的 GAN 看起来像这样:

for epoch:
  for batch:

    fakes = generator.predict_on_batch(batch)

    dlc = discriminator.train_on_batch(batch, ..)
    dlf = discriminator.train_on_batch(fakes, ..)
    dis_loss_total = 0.5 *  np.add(dlc, dlf)

    g_loss = gan.train_on_batch(batch,..)

    # save losses to array to work with later
Run Code Online (Sandbox Code Playgroud)

这些损失是针对每个批次的。我如何在一个时代获得它们?顺便说一句:我需要一个时代的损失,为了什么?

python machine-learning keras generative-adversarial-network

7
推荐指数
1
解决办法
8418
查看次数