升级到Keras 2.0.9之后,我一直在使用该multi_gpu_model实用程序,但我无法保存我的模型或最佳权重
model.save('path')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
TypeError:无法pickle模块对象
我怀疑获取模型对象的访问权存在一些问题.有没有解决这个问题的工作?
我正在使用Keras构建一个网络.在这个过程中,我需要一个层,它接受LSTM输入,什么都不做,只输出与输入完全相同.即如果LSTM的每个输入记录都像[[A_t1,A_t2,A_t3,A_t4,A_t5,A_t6]]那样,我正在寻找一个层:
model.add(SomeIdentityLayer(x))
Run Code Online (Sandbox Code Playgroud)
SomeIdentityLayer(x)将[[A_t1, A_t2, A_t3, A_t4, A_t5, A_t6]]作为输入和输出[[A_t1, A_t2, A_t3, A_t4, A_t5, A_t6]].Keras有这样的层/结构吗?谢谢!
我正在使用以下代码调整存储在文件夹(两个类)中的RGB图像的大小:
from keras.preprocessing.image import ImageDataGenerator
dataset=ImageDataGenerator()
dataset.flow_from_directory('/home/1',target_size=(50,50),save_to_dir='/home/resized',class_mode='binary',save_prefix='N',save_format='jpeg',batch_size=10)
Run Code Online (Sandbox Code Playgroud)
我的数据树如下所示:
1/
1_1/
img1.jpg
img2.jpg
........
1_2/
IMG1.jpg
IMG2.jpg
........
resized/
1_1/ (here i want to save resized images of 1_1)
2_2/ (here i want to save resized images of 1_2)
Run Code Online (Sandbox Code Playgroud)
运行代码后,我得到以下输出,但没有图像:
Found 271 images belonging to 2 classes.
Out[12]: <keras.preprocessing.image.DirectoryIterator at 0x7f22a3569400>
Run Code Online (Sandbox Code Playgroud)
如何保存图像?
keras 中 Layer 类的每个派生类都有build()定义。
build()是我们为 keras 层分配权重的地方。
什么时候内部调用这个函数?我无法找到任何可能调用它的代码
在位于topology.py:580__call_()的Layer类中,我们调用但只有当 时才会调用它。它总是被设置的,只有当 self.built 为 True 时才会被调用。self.build()self.built = Trueself.build()
也许这是一个非常愚蠢的问题,但我找不到如何在Keras中使用categorical_hinge的示例。我进行分类,目标是shape(,1)[-1,0,1],所以我有3个类别。使用功能性API,我像这样设置了输出层:
输出=密集(1,名称='输出',激活='tanh',kernel_initializer ='lecun_normal')(output1)
然后我申请:
model.compile(optimizer = adam,损失= {'输出':'categorical_hinge'},指标= ['准确性'])
结果是该模型正在收敛,但精度接近0。我该怎么做?
我正在尝试通过从此GitHub线程中获取大量帮助的方式来实现Attention使用抽象文本摘要的机制,在Keras该线程中有大量有关实现的有益讨论。我正在努力理解代码的某些非常基本的位以及为成功获得输出而需要修改的内容。我知道这是通过所有先前时间戳的所有隐藏状态生成的上下文向量的加权总和,这就是我们在下面尝试做的事情。attention
数据:
我得到了BBC新闻数据集,该新闻数据集由新闻文本和政治,娱乐和体育等各种类别的标题组成。
参数:
n_embeddings = 64
vocab_size = len(voabulary)+1
max_len = 200
rnn_size = 64
Run Code Online (Sandbox Code Playgroud)
码:
_input = Input(shape=(max_len,), dtype='int32')
embedding = Embedding(input_dim=vocab_size, output_dim=n_embeddings, input_length=max_len)(_input)
activations = LSTM(rnn_size, return_sequences=True)(embedding)
# compute importance for each step
attention = Dense(1, activation='tanh')(activations)
attention = Flatten()(attention)
attention = Activation('softmax')(attention)
attention = RepeatVector(units)(attention)
attention = Permute([2, 1])(attention)
# apply the attention
sent_representation = merge([activations, attention], mode='mul')
sent_representation = Lambda(lambda xin: K.sum(xin, axis=1))(sent_representation)
probabilities = Dense(max_len, activation='softmax')(sent_representation)
model …Run Code Online (Sandbox Code Playgroud) 我在 Keras(张量流后端)中定义了一个自定义损失函数,该函数由重建 MSE 以及学习的概率分布和标准正态分布之间的 kullback leibler 散度组成。(它用于变分自动编码器。)
我希望能够在训练期间慢慢增加 KL 散度项对成本的影响,权重称为“reg”,从 reg=0.0 开始,逐渐增加,直到达到 1.0。我希望将增长率调整为超参数。(到目前为止,我只是将“reg”参数设置为常量 0.5。)
Keras 中有执行此操作的功能吗?
def vae_loss(y_true,y_pred):
reg = 0.5
# Average cosine distance for all words in a sequence
reconstruction_loss = tf.reduce_mean(mean_squared_error(y_true, y_pred),1)
# Second part of the loss ensures the z probability distribution doesn't stray too far from normal
KL_divergence_loss = tf.reduce_mean(tf.log(z_sigma) + tf.div((1 + tf.square(z_mu)),2*tf.square(z_sigma)) - 0.5,1)
loss = reconstruction_loss + tf.multiply(reg,KL_divergence_loss)
return loss
Run Code Online (Sandbox Code Playgroud) 如果我有一个数据集
dataset = tf.keras.preprocessing.image_dataset_from_directory(
directory,
labels="inferred",
label_mode="int",
class_names=None,
color_mode="rgb",
batch_size=32,
image_size=(32, 32),
shuffle=True,
seed=None,
validation_split=None,
subset=None,
interpolation="bilinear",
follow_links=False,
)
Run Code Online (Sandbox Code Playgroud)
如何将其分成 x 和 y 数组?x 数组将是 IMG 数组,y 数组将包含每个 img 的类别。
我正在执行一些与图像字幕相关的任务,并且已经像这样加载了初始模型的权重
model = InceptionV3(weights='imagenet')
Run Code Online (Sandbox Code Playgroud)
但是我得到这样的错误:
AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
Run Code Online (Sandbox Code Playgroud)
我该怎么办?请帮忙。这是上面代码的完整输出。
1。-------------------------------------------------- ------------------------- AttributeError Traceback(最近一次通话最近)在()1#加载初始v3模型----> 2模型= InceptionV3(include_top = True,weights ='imagenet')3#InceptionV3(weights ='imagenet')
~/anaconda3/lib/python3.6/site-packages/keras/applications/__init__.py
in wrapper(*args, **kwargs)
26 kwargs['models'] = models
27 kwargs['utils'] = utils
---> 28 return base_fun(*args, **kwargs)
29
30 return wrapper
~/anaconda3/lib/python3.6/site-packages/keras/applications/inception_v3.py
in InceptionV3(*args, **kwargs)
9 @keras_modules_injection
10 def InceptionV3(*args, **kwargs):
---> 11 return inception_v3.InceptionV3(*args, **kwargs)
12
13
~/anaconda3/lib/python3.6/site-packages/keras_applications/inception_v3.py
in InceptionV3(include_top, weights, input_tensor, input_shape,
pooling, classes, **kwargs)
155
156 if input_tensor is None:
--> 157 img_input = …Run Code Online (Sandbox Code Playgroud) 我加载了一个已保存的 h5 模型并希望将该模型保存为 pb。在训练期间使用tf.keras.callbacks.ModelCheckpoint回调函数保存模型。
TF 版本:2.0.0a
编辑:2.0.0-beta1 也有同样的问题
我保存 pb 的步骤:
K.set_learning_phase(0)tf.keras.models.load_modelfreeze_session()函数。freeze_session()函数tf.keras.backend.get_session我得到的错误,编译和不编译:
AttributeError:模块“tensorflow.python.keras.api._v2.keras.backend”没有属性“get_session”
我的问题:
TF2没有get_session了?(我知道tf.contrib.saved_model.save_keras_model它不再存在,我也试过tf.saved_model.save哪些没有真正起作用)
或者get_session只有在我实际训练模型时才有效,而只是加载 h5 不起作用
编辑:同样在新训练的会话中,没有 get_session 可用。
感谢您的帮助
更新:
自 TF2.x 正式发布以来,图形/会话概念发生了变化。该savedmodelAPI应该被使用。您可以将tf.compat.v1.disable_eager_execution()与 TF2.x 一起使用,它将生成一个 pb 文件。但是,我不确定它是哪种 pb 文件类型,因为保存的模型组合从 TF1 更改为 TF2。我会继续挖掘。
keras-2 ×10
keras ×8
tensorflow ×6
python ×4
keras-layer ×3
image ×1
lstm ×1
multi-gpu ×1
python-3.x ×1