вот моя форма ввода:
>>>X_train.shape # features
>>>(82724, 3, 32)
>>>Y_train.shape # labels
>>>(82724,)
и некоторый пример:
X_train[1]
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
5, 5, 5, 5, 5, 1, 1, 1, 1, 1],
[1, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
Y_train
array([0, 1, 1, ..., 0, 1, 1])
Я пытаюсь использовать байесовский conv1d с сайта тензорного потока и Я не знаю, работает ли он для двоичной классификации и как адаптировать его к моему вводу. вот как я его изменил:
model = tf.keras.Sequential([
tf.keras.layers.Reshape([3, 32]),
tfp.layers.Convolution1DFlipout(
64, kernel_size=5, padding='SAME', activation=tf.nn.relu),
tf.keras.layers.Flatten(),
tfp.layers.DenseFlipout(1),
])
logits = model(X_train)
neg_log_likelihood = tf.nn.softmax_cross_entropy_with_logits(
labels=Y_train, logits=logits)
kl = sum(model.losses)
loss = neg_log_likelihood + kl
train_op = tf.train.AdamOptimizer().minimize(loss)
model.compile(optimizer = train_op , metrics = ['mse'])
model.summary()
Вот ошибка, которую я получаю:
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow_probability/python/layers/util.py:106: Layer.add_variable (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.
Instructions for updating:
Please use `layer.add_weight` method instead.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-f4705a46a464> in <module>()
8
9
---> 10 logits = model(X_train)
11 neg_log_likelihood = tf.nn.softmax_cross_entropy_with_logits(
12 labels=Y_train, logits=logits)
5 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
966 with base_layer_utils.autocast_context_manager(
967 self._compute_dtype):
--> 968 outputs = self.call(cast_inputs, *args, **kwargs)
969 self._handle_activity_regularization(inputs, outputs)
970 self._set_mask_metadata(inputs, outputs, input_masks)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/sequential.py in call(self, inputs, training, mask)
289 kwargs['training'] = training
290
--> 291 outputs = layer(inputs, **kwargs)
292
293 if len(nest.flatten(outputs)) != 1:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
966 with base_layer_utils.autocast_context_manager(
967 self._compute_dtype):
--> 968 outputs = self.call(cast_inputs, *args, **kwargs)
969 self._handle_activity_regularization(inputs, outputs)
970 self._set_mask_metadata(inputs, outputs, input_masks)
/usr/local/lib/python3.6/dist-packages/tensorflow_probability/python/layers/conv_variational.py in call(self, inputs)
227
228 def call(self, inputs):
--> 229 inputs = tf.convert_to_tensor(value=inputs, dtype=self.dtype)
230
231 outputs = self._apply_variational_kernel(inputs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in convert_to_tensor_v2(value, dtype, dtype_hint, name)
1281 name=name,
1282 preferred_dtype=dtype_hint,
-> 1283 as_ref=False)
1284
1285
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, dtype_hint, ctx, accepted_result_types)
1315 raise ValueError(
1316 "Tensor conversion requested dtype %s for Tensor with dtype %s: %r" %
-> 1317 (dtype.name, value.dtype.name, value))
1318 return value
1319
ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int64: <tf.Tensor: shape=(82724, 3, 32), dtype=int64, numpy=
array([[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
...,
[[0, 0, 0, ..., 2, 5, 0],
[0, 0, 0, ..., 3, 3, 3],
[3, 3, 3, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]],
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0]]])>
Я пытался изменить dtype массивов, но это, похоже, ничего не изменило. как я могу это исправить? спасибо