我在 Keras 中遇到了 CNN 的多种实现,并注意到有些人使用来自 keras.layers.convolutional import Conv1D 的 Conv1D,而其他人使用来自 keras.layers import Convolution1D 的 Convolution1D。两者是否有区别或优势,或者它们可能只是 Keras 的不同版本。
我创建了一个pandas数据帧但是当删除重复的行时,我得到了错误:
TypeError:'Series'对象是可变的,因此它们不能被散列
运行时会发生这种情况:
print(type(data)) # <class 'pandas.core.frame.DataFrame'> check that it's not a series
data.drop_duplicates(subset=['statement'], inplace=True)
print(data.info())
Run Code Online (Sandbox Code Playgroud)
信息返回:
> class 'pandas.core.frame.DataFrame'
> Int64Index: 39671 entries, 0 to 39670
> Data columns (total 4 columns):
> statement 39671 non-null object
> topic_direction 39671 non-null object
> topic 39671 non-null object
> direction 39671 non-null object
> dtypes: object(4)
> memory usage: 1.5+ MB
> None
Run Code Online (Sandbox Code Playgroud) 我正在使用自定义层对 keras 模型进行子类化。每个层都包装了一个生成它们层时使用的参数字典。似乎这些参数字典没有在 Tensorflow 中进行训练检查点之前设置,而是在之后设置,这会导致错误。我不知道如何解决这个问题,因为ValueError被提出也提供了过时的信息(tf.contrib不再存在)。
ValueError: 无法保存对象 {'units': 32, 'activation': 'tanh', 'recurrent_initializer': 'glorot_uniform', 'dropout': 0, 'return_sequences': True}(在属性上自动构造的字典包装器任务)。包装的字典在包装器外被修改(它的最终值是 {'units': 32, 'activation': 'tanh', 'recurrent_initializer': 'glorot_uniform', 'dropout': 0, 'return_sequences': True},它的添加检查点依赖项时的值为 None),这会破坏对象创建时的恢复。
如果您不需要此字典检查点,请将其包装在 tf.contrib.checkpoint.NoDependency 对象中;它将被自动解包并随后被忽略。
这是引发此问题的图层示例:
class RecurrentConfig(BaseLayer):
'''Basic configurable recurrent layer'''
def __init__(self, params: Dict[Any, Any], mode: ModeKeys, layer_name: str = '', **kwargs):
self.layer_name = layer_name
self.cell_name = params.pop('cell', 'GRU')
self.num_layers = params.pop('num_layers', 1)
kwargs['name'] = layer_name
super().__init__(params, mode, **kwargs)
if layer_name == '':
self.layer_name = self.cell_name
self.layers: List[layers.Layer] …Run Code Online (Sandbox Code Playgroud) 我正在使用 keras 子类化模块重新制作一个以前需要两个输入和两个输出的功能模型。我找不到任何关于这是否/如何可能的文档。
TF2.0/Keras 子类化 API 是否允许多输入?
输入到我的功能模型,构建很简单:
word_in = Input(shape=(None,)) # sequence length
char_in = Input(shape=(None, None))
... layers...
m = Model(inputs=[word_in, char_in], outputs=[output_1, output_2])
Run Code Online (Sandbox Code Playgroud) 我目前有一个 tf.keras 模型子类,但不能使用 GPU 分发策略,尽管 Tensorflow 网站上指出我可能收到一个错误,告诉我相反。
我发现的一个解决方案是将模型包装在 tf.keras.models.Model 中,但这导致ValueError: We currently do not support distribution strategy with a `Sequential` model that is created without `input_shape`/`input_dim` set in its first layer or a subclassed model.
这对我来说无法解决
,因为我的输入形状是 (None, None) 由于输入是一组序列不是相同的形状,我没有将它们定义为相同的形状。
有没有办法解决这个问题,或者将 tf.distribute 与 Model 子类一起使用?
nlupy_1 | File "/app/src/main/python/mosaix/serve/api/__init__.py", line 201, in main
nlupy_1 | init_state()
nlupy_1 | File "/app/src/main/python/mosaix/serve/api/__init__.py", line 135, in init_state
nlupy_1 | network_dict[key] = ParsingPipeline(pipeline_params, 'predict', path)
nlupy_1 | File "/app/src/main/python/mosaix/learn/pipelines/pipelines.py", line 130, in __init__ …Run Code Online (Sandbox Code Playgroud)