Чтобы визуализировать весы, вы можете использовать tf.image_summary()
op для преобразования сверточного фильтра (или среза фильтра) в итоговый прото, записать их в журнал с помощью tf.train.SummaryWriter
и визуализировать журнал, используя TensorBoard .
Предположим, у вас есть следующая (упрощенная) программа:
filter = tf.Variable(tf.truncated_normal([8, 8, 3]))
images = tf.placeholder(tf.float32, shape=[None, 28, 28])
conv = tf.nn.conv2d(images, filter, strides=[1, 1, 1, 1], padding="SAME")
# More ops...
loss = ...
optimizer = tf.GradientDescentOptimizer(0.01)
train_op = optimizer.minimize(loss)
filter_summary = tf.image_summary(filter)
sess = tf.Session()
summary_writer = tf.train.SummaryWriter('/tmp/logs', sess.graph_def)
for i in range(10000):
sess.run(train_op)
if i % 10 == 0:
# Log a summary every 10 steps.
summary_writer.add_summary(filter_summary, i)
После этого вы можете запустить TensorBoard, чтобы визуализировать журналы в /tmp/logs
, и вы сможете увидеть визуализацию фильтра.
Обратите внимание, что этот трюк визуализирует фильтры глубины 3 как изображения RGB (для соответствия каналам входного изображения). Если у вас есть более глубокие фильтры или они не имеют смысла интерпретировать цветные каналы, вы можете использовать tf.split()
op для разделения фильтра на размеру глубины и генерации одного изображения на глубину .
Соответствовал бы Fitnesse / подойти для того, что Вы хотите?
СООТВЕТСТВИЕ является платформой приемочного испытания, а не платформой модульного теста, но от то, что Вы описываете Вас, хотело бы гарантировать, чтобы эти три реализации имели то же поведение, а не идентичные проекты.
СООТВЕТСТВИЕ имеет ссылки на несколько языков
Как примечание стороны, Вы могли также попытаться писать своего рода компилятор, во многом как FogCreek (на) известном языке Васаби, затем Вы могли написать и свой код и тесты на том языке, и иметь компилятор, делают Вашу работу.... это, конечно, вероятно, было бы сверхсложно, но я думаю, что это было бы намного лучше, чем попытка определить тестовый язык XML... и потенциально намного более читаемый.
Я думаю, что Вы сверхусложняете вещи... Вы могли бы рассмотреть язык сценариев, который можно использовать против всех 3. Я знаю, что Ruby мог использоваться для тестирования Java через JRuby и Виа IronRuby C#, но я не знаю о AS3.
Я никогда не должен был делать этого сам, но я предполагаю, что динамический язык как Ruby мог действительно позволить Вам сделать это без большой дополнительной работы.
Вы также можете проверить Fitnesse с Slim , так как Slim должен быть намного более легким для реализации на новых языках (AS3). Я предполагаю, что это больше о приемочном / интеграционном тестировании, чем модульном тестировании, но это может стоить изучить.