Я создаю сверточный NN символьного уровня. У меня есть куча образцов в качестве обучающих данных, и каждый образец имеет размерность 3640. Я думаю, что я не имею ни малейшего понятия грубо, как изменить размер/перекроить размеры в tensorflow, потому что я продолжаю получать ошибки я не могу исправить:Размеры слоев в Conv Net Tensorflow: ValueError: Форма полной переменной (logistic_regression/weight) должна быть полностью определена
Traceback (most recent call last):
File "/Users/osopova/Documents/00_KSU_Masters/00_2016_Fall/00_Research/cnn_da/step_4_cnn_4.py", line 87, in my_conv_model
prediction, loss = learn.models.logistic_regression(pool, y)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/models.py", line 146, in logistic_regression
'weights', [x.get_shape()[1], y.get_shape()[-1]], dtype=dtype)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 873, in get_variable
custom_getter=custom_getter)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 700, in get_variable
custom_getter=custom_getter)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 217, in get_variable
validate_shape=validate_shape)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 202, in _true_getter
caching_device=caching_device, validate_shape=validate_shape)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 515, in _get_single_variable
"but instead was %s." % (name, shape))
ValueError: Shape of a new variable (logistic_regression/weights) must be fully defined, but instead was (?, 1).
Traceback (most recent call last):
File "/Users/osopova/Documents/00_KSU_Masters/00_2016_Fall/00_Research/cnn_da/step_4_cnn_4.py", line 175, in <module>
Traceback (most recent call last):
File "/Users/osopova/Documents/00_KSU_Masters/00_2016_Fall/00_Research/cnn_da/step_4_cnn_4.py", line 87, in my_conv_model
prediction, loss = learn.models.logistic_regression(pool, y)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/models.py", line 146, in logistic_regression
'weights', [x.get_shape()[1], y.get_shape()[-1]], dtype=dtype)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 873, in get_variable
custom_getter=custom_getter)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 700, in get_variable
custom_getter=custom_getter)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 217, in get_variable
validate_shape=validate_shape)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 202, in _true_getter
caching_device=caching_device, validate_shape=validate_shape)
File "/Users/osopova/Applications/anaconda/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 515, in _get_single_variable
"but instead was %s." % (name, shape))
ValueError: Shape of a new variable (logistic_regression/weights) must be fully defined, but instead was (?, 1).
Вот код:
import tensorflow as tf
from tensorflow.contrib import learn
N_FEATURES = 140*26
N_FILTERS = 10
WINDOW_SIZE = 3
ко модель начинается:
def my_conv_model(x, y):
# to form a 4d tensor of shape batch_size x 1 x N_FEATURES x 1
x = tf.reshape(x, [-1, 1, N_FEATURES, 1])
# this will give sliding window of 1 x WINDOW_SIZE convolution.
features = tf.contrib.layers.convolution2d(inputs=x,
num_outputs=N_FILTERS,
kernel_size=[1, WINDOW_SIZE],
padding='VALID')
# Add a RELU for non linearity.
features = tf.nn.relu(features)
# Max pooling across output of Convolution+Relu.
pool = tf.nn.max_pool(features, ksize=[1, 1, 2, 1],
strides=[1, 1, 2, 1], padding='SAME')
print("(1) pool_shape", pool.get_shape())
print("(1) y_shape", y.get_shape())
pool_shape = tf.shape(pool)
pool = tf.reshape(pool, [pool_shape[0], pool_shape[2]*pool_shape[3]])
y = tf.expand_dims(y, 1)
print("(2) pool_shape", pool.get_shape())
print("(2) y_shape", y.get_shape())
try:
exc_info = sys.exc_info()
print("(3) pool_shape", pool.get_shape())
print("(3) y_shape", y.get_shape())
ЗДЕСЬ пРИХОДИТ ОШИБКА:
prediction, loss = learn.models.logistic_regression(pool, y)
return prediction, loss
except Exception:
#print(traceback.format_exc())
pass
finally:
# Display the *original* exception
traceback.print_exception(*exc_info)
del exc_info
#return prediction, loss
Формы:
(1) pool_shape (?, 1, 1819, 10)
(1) y_shape (?,)
(2) pool_shape (?, ?)
(2) y_shape (?, 1)
(3) pool_shape (?, ?)
(3) y_shape (?, 1)
Основной:
def main(unused_argv):
# training and testing data encoded as one-hot
data_folder = './data'
sandyData = np.loadtxt(data_folder+'/sandyData.csv', delimiter=',')
sandyLabels = np.loadtxt(data_folder+'/sandyLabels.csv', delimiter=',')
x_train, x_test, y_train, y_test = \
train_test_split(sandyData, sandyLabels, test_size=0.2, random_state=7)
x_train = np.array(x_train, dtype=np.float32)
x_test = np.array(x_test, dtype=np.float32)
y_train = np.array(y_train, dtype=np.float32)
y_test = np.array(y_test, dtype=np.float32)
# Build model
classifier = learn.Estimator(model_fn=my_conv_model)
# Train and predict
classifier.fit(x_train, y_train, steps=100)
y_predicted = [p['class'] for p in classifier.predict(x_test, as_iterable=True)]
score = metrics.accuracy_score(y_test, y_predicted)
print('Accuracy: {0:f}'.format(score))
if __name__ == '__main__':
tf.app.run() `
Можете ли вы опубликовать полную статистику стека? – mrry
@mrry, пожалуйста, посмотрите, я обновил сообщение. Я использовал 'traceback.format_exc()', чтобы получить (полную) трассировку стека – Oleksandra
@mrry - мое обновление достаточно? Я использовал первый совет здесь: http://stackoverflow.com/questions/3702675/how-to-print-the-full-traceback-without-halting-the-program для печати полной трассировки стека, но я не уверен, что это именно то, что вы хотели, чтобы я предоставлял. – Oleksandra