Стандартный способ работы с тензорным ядром - PullRequest
0 голосов
/ 15 мая 2019

Обычно при использовании API высокого уровня, такого как keras, мы не определяем исключительно параметры слоев. Но при использовании тензорного ядра все параметры и веса моделей определяются исключительно.

W1 = tf.Variable(tf.random_normal([filt1_features,
filt1_features, no_channels, conv1_features]))
b1 = tf.Variable(tf.ones([conv1_features]))
W2 = tf.Variable(tf.random_normal([filt2_features,
filt2_features, conv1_features, conv2_features]))
b2 = tf.Variable(tf.ones([conv2_features]))

Также создаются вспомогательные функции:

 # Define helper functions for the convolution and maxpool layers:
 def conv_layer(x, W, b):
   conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1],
     padding='SAME')
   conv_with_b = tf.nn.bias_add(conv, b)
   conv_out = tf.nn.relu(conv_with_b)
   return conv_out
 def maxpool_layer(conv, k=2):
   return tf.nn.max_pool(conv, ksize=[1, k, k, 1],
    strides=[1, k, k, 1], padding='SAME')

Это стандартный способ работы?

1 Ответ

1 голос
/ 15 мая 2019

Это API низкого уровня. Первоначально это был единственный способ сделать что-то в TensorFlow. Если вы хотите использовать низкий уровень, тогда да, это правильный способ сделать это.

Вы получаете больше гибкости, которая, возможно, вам нужна / нужна, но если вы просто собираетесь работать со стандартными слоями, такими как пул, conv2d, полностью подключенными в ваших моделях, то, вероятно, нет смысла, и вы можете просто использовать tf .layers или tf.keras.layers api, который будет быстрее и менее подвержен ошибкам, чем сам все пишет.

Эти API-интерфейсы более высокого уровня, в конце концов, будут выполнять те же действия, что вы написали выше, просто вам не нужно беспокоиться о создании переменных и т. Д., Что ускоряет процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...