Я использую сверточные нейронные сети для шахмат.В шахматах фигуры могут перемещаться либо в пределах 3x3
блоков (например, рыцари, пешки, короли), вдоль файлов 1x8
ranks / 8x1
(ладьи и королевы) или вдоль диагоналей (королев и слонов).
Если я использую tensorflow
, я могу создать сверточные слои, используя tf.keras.layers.Conv2D
.Я знаю, как сделать фильтры, которые являются 3x3
блоками, 1x8
рангами и 8x1
файлами, следующим образом:
import tensorflow as tf
num_filters = 16
block = tf.keras.layers.Conv2D(num_filters, (3, 3)) # 3x3 block
rank = tf.keras.layers.Conv2D(num_filters, (1, 8)) # filters along a rank
file = tf.keras.layers.Conv2D(num_filters, (8, 1)) # filters along file
Я хотел бы сделать сверточные фильтры / ядра, которые имеют диагональную форму какхорошо, чтобы показать, как движутся епископы / королевы.Это возможно?Может быть, есть способ сделать 8x8
сверточный фильтр и зафиксировать недиагональные значения в ноль?