tensorflow.js - 错误:尚未实现对 4 级 x 的点支持
问题描述
我正在使用 Tensorflow.js 来预测我在 Keras 中训练的模型。但是,当我输入我的 4 维张量时,我收到以下错误:
UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: dot support for x of rank 4 is not yet implemented: x shape = 32,1,1,100
我在网上找不到任何关于此错误的信息 - 我怀疑这与 Tensorflow.js 尚不具备此功能有关,但我不确定。知道在哪里可以获得更多信息吗?
编辑 1
这是我的代码,抛出错误的行是model.predict(noise_tensor)
. 执行它的大部分代码都是无关紧要的:
noise_tensor.print(true)
generated_images = model.predict(noise_tensor) //error occours here
这是我的 4d 张量的打印输出:
Tensor
dtype: float32
rank: 4
shape: [64,1,1,100]
values:
[ [ [[0.3799773 , -0.0252707, 0.0118336 , ..., 0.1703698 , -0.0649208, 0.2152225 ],]],
[ [[0.219656 , 0.2850143 , -0.1078744, ..., 0.1627689 , -0.0838831, -0.1112608],]],
[ [[-0.1295149, -0.08308 , 0.1872116 , ..., -0.2033772, -0.4184959, -0.3357461],]],
...
[ [[0.0029674 , 0.0422036 , 0.067896 , ..., 0.1368463 , 0.1122015 , -0.0395375],]],
[ [[0.043546 , -0.0281712, 0.0898769 , ..., 0.205565 , 0.1444133 , 0.0067788 ],]],
[ [[-0.1089588, -0.0161969, -0.0724337, ..., 0.1427118 , -0.2577117, 0.0013836 ],]]]
以下是 Keras 模型的摘要:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 1, 1, 32768) 3309568
_________________________________________________________________
reshape_1 (Reshape) (None, 8, 8, 512) 0
_________________________________________________________________
batch_normalization_1 (Batch (None, 8, 8, 512) 2048
_________________________________________________________________
activation_1 (Activation) (None, 8, 8, 512) 0
_________________________________________________________________
conv2d_transpose_1 (Conv2DTr (None, 16, 16, 256) 3277056
_________________________________________________________________
batch_normalization_2 (Batch (None, 16, 16, 256) 1024
_________________________________________________________________
activation_2 (Activation) (None, 16, 16, 256) 0
_________________________________________________________________
conv2d_transpose_2 (Conv2DTr (None, 32, 32, 128) 819328
_________________________________________________________________
batch_normalization_3 (Batch (None, 32, 32, 128) 512
_________________________________________________________________
activation_3 (Activation) (None, 32, 32, 128) 0
_________________________________________________________________
conv2d_transpose_3 (Conv2DTr (None, 64, 64, 64) 204864
_________________________________________________________________
batch_normalization_4 (Batch (None, 64, 64, 64) 256
_________________________________________________________________
activation_4 (Activation) (None, 64, 64, 64) 0
_________________________________________________________________
conv2d_transpose_4 (Conv2DTr (None, 128, 128, 1) 1601
_________________________________________________________________
activation_5 (Activation) (None, 128, 128, 1) 0
=================================================================
Total params: 7,616,257
Trainable params: 7,614,337
Non-trainable params: 1,920
_________________________________________________________________
以及Python中的相应代码:
def construct_generator():
generator = Sequential()
generator.add(Dense(units=8 * 8 * 512,
kernel_initializer='glorot_uniform',
input_shape=(1, 1, 100)))
generator.add(Reshape(target_shape=(8, 8, 512)))
generator.add(BatchNormalization(momentum=0.5))
generator.add(Activation('relu'))
generator.add(Conv2DTranspose(filters=256, kernel_size=(5, 5),
strides=(2, 2), padding='same',
data_format='channels_last',
kernel_initializer='glorot_uniform'))
generator.add(BatchNormalization(momentum=0.5))
generator.add(Activation('relu'))
generator.add(Conv2DTranspose(filters=128, kernel_size=(5, 5),
strides=(2, 2), padding='same',
data_format='channels_last',
kernel_initializer='glorot_uniform'))
generator.add(BatchNormalization(momentum=0.5))
generator.add(Activation('relu'))
generator.add(Conv2DTranspose(filters=64, kernel_size=(5, 5),
strides=(2, 2), padding='same',
data_format='channels_last',
kernel_initializer='glorot_uniform'))
generator.add(BatchNormalization(momentum=0.5))
generator.add(Activation('relu'))
generator.add(Conv2DTranspose(filters=1, kernel_size=(5, 5),
strides=(2, 2), padding='same',
data_format='channels_last',
kernel_initializer='glorot_uniform'))
generator.add(Activation('tanh'))
optimizer = Adam(lr=0.00015, beta_1=0.5)
generator.compile(loss='binary_crossentropy',
optimizer=optimizer,
metrics=None)
print('generator')
generator.summary()
return generator
编辑 2
这是 tensorflow.js 中的一个错误。对于未来的访问者,请在此处查看 GitHub 线程。
解决方案
现在,输入应该是等级 1 或 2tf.dot
才能工作
推荐阅读
- tensorflow - 理解 tensorflow lite schema 中的 SparsityParameters
- python - 我无法理解代码中计算的 FPR、TPR、阈值、ROC 值的含义(直觉)?
- python - Plotting series of images using matplot
- c# - How to get around the "Under Attack" mode from Cloudflare on websites using requests?
- google-sheets - 使用谷歌表格数组公式从一段时间内获取每天的最大值
- ruby-on-rails - uninitialized constant ActiveRecord::ConnectionAdapters::ReconnectOnErrorManagement
- c++ - 链接器错误:未定义对 fdt_path_offset 的引用
- javascript - React Native 社区日期选择器:将选择的日期设置为文本组件(React 状态挂钩)
- javascript - 具有过滤器和排序功能的高阶函数,可在对象数组中查找指定属性
- ansible - 如何使用 `yum` 模块在 Ansible 中清理和缓存 yum 存储库?