Как добавить сверточный слой в нейронную сеть? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть нейронная сеть прямой связи в соответствии с этой публикацией

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

Нейроны

n_neurons_1 = 256
n_neurons_2 = 128
n_neurons_3 = 64
n_neurons_4 = 32
n_neurons_5 = 16
n_neurons_6 = 8

net = tf.InteractiveSession()

Заполнитель

X = tf.placeholder(dtype=tf.float32, shape=[None, n_stocks])
Y = tf.placeholder(dtype=tf.float32, shape=[None])

Инициализаторы

sigma = 1
weight_initializer = tf.variance_scaling_initializer(mode="fan_avg", 
                                                     distribution="uniform", 
                                                     scale=sigma)
bias_initializer = tf.zeros_initializer()

Скрытые веса

W_hidden_1 = tf.Variable(weight_initializer([n_stocks, n_neurons_1]))
bias_hidden_1 = tf.Variable(bias_initializer([n_neurons_1]))
W_hidden_2 = tf.Variable(weight_initializer([n_neurons_1, n_neurons_2]))
bias_hidden_2 = tf.Variable(bias_initializer([n_neurons_2]))
W_hidden_3 = tf.Variable(weight_initializer([n_neurons_2, n_neurons_3]))
bias_hidden_3 = tf.Variable(bias_initializer([n_neurons_3]))
W_hidden_4 = tf.Variable(weight_initializer([n_neurons_3, n_neurons_4]))
bias_hidden_4 = tf.Variable(bias_initializer([n_neurons_4]))
W_hidden_5 = tf.Variable(weight_initializer([n_neurons_4, n_neurons_5]))
bias_hidden_5 = tf.Variable(bias_initializer([n_neurons_5]))
W_hidden_6 = tf.Variable(weight_initializer([n_neurons_5, n_neurons_6]))
bias_hidden_6 = tf.Variable(bias_initializer([n_neurons_6]))

Я пытаюсь добавить сверточный слой

W_conv1 = tf.Variable(weight_initializer([None, n_stocks]))
conv1 = tf.nn.conv2d(X, W_conv1, strides=[-1, 1, 1, 1], padding='SAME')

hidden_1 = tf.nn.relu(tf.add(tf.matmul(conv1, W_hidden_1), bias_hidden_1))
hidden_2 = tf.nn.relu(tf.add(tf.matmul(hidden_1, W_hidden_2), bias_hidden_2))
hidden_3 = tf.nn.relu(tf.add(tf.matmul(hidden_2, W_hidden_3), bias_hidden_3))
hidden_4 = tf.nn.relu(tf.add(tf.matmul(hidden_3, W_hidden_4), bias_hidden_4))
hidden_5 = tf.nn.relu(tf.add(tf.matmul(hidden_4, W_hidden_5), bias_hidden_5))
hidden_6 = tf.nn.relu(tf.add(tf.matmul(hidden_5, W_hidden_6), bias_hidden_6))

Выдает такую ​​ошибку:

TypeError: аргумент int () должен быть строкой, байтовоподобным объектом или числом, а не NoneType

Полагаю, это из-за None

W_conv1 = tf.Variable(weight_initializer([None, n_stocks]))

Как решить эту проблему? Правильно ли добавить таким образом сверточный слой? Если это неправильно, как это должно быть добавлено?

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