├── .clang-format ├── .gitignore ├── CMakeLists.txt ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── assets ├── audio.png ├── embedding.png ├── file_example_WAV_1MG.wav ├── histogram.png ├── image.png ├── meta.tsv ├── multi-image.png ├── scalar.png ├── text.png └── vecs.tsv ├── cmake └── tensorboard_loggerConfig.cmake.in ├── include ├── crc.h └── tensorboard_logger.h ├── proto ├── event.proto ├── projector_config.proto ├── resource_handle.proto ├── summary.proto ├── tensor.proto ├── tensor_shape.proto └── types.proto ├── src ├── crc.cc └── tensorboard_logger.cc └── tests └── test_tensorboard_logger.cc /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | # BasedOnStyle: Google 4 | AccessModifierOffset: -1 5 | AlignAfterOpenBracket: Align 6 | AlignConsecutiveMacros: false 7 | AlignConsecutiveAssignments: false 8 | AlignConsecutiveDeclarations: false 9 | AlignEscapedNewlines: Left 10 | AlignOperands: true 11 | AlignTrailingComments: true 12 | AllowAllArgumentsOnNextLine: true 13 | AllowAllConstructorInitializersOnNextLine: true 14 | AllowAllParametersOfDeclarationOnNextLine: true 15 | AllowShortBlocksOnASingleLine: Never 16 | AllowShortCaseLabelsOnASingleLine: false 17 | AllowShortFunctionsOnASingleLine: All 18 | AllowShortLambdasOnASingleLine: All 19 | AllowShortIfStatementsOnASingleLine: WithoutElse 20 | AllowShortLoopsOnASingleLine: true 21 | AlwaysBreakAfterDefinitionReturnType: None 22 | AlwaysBreakAfterReturnType: None 23 | AlwaysBreakBeforeMultilineStrings: true 24 | AlwaysBreakTemplateDeclarations: Yes 25 | BinPackArguments: true 26 | BinPackParameters: true 27 | BraceWrapping: 28 | AfterCaseLabel: false 29 | AfterClass: false 30 | AfterControlStatement: false 31 | AfterEnum: false 32 | AfterFunction: false 33 | AfterNamespace: false 34 | AfterObjCDeclaration: false 35 | AfterStruct: false 36 | AfterUnion: false 37 | AfterExternBlock: false 38 | BeforeCatch: false 39 | BeforeElse: false 40 | IndentBraces: false 41 | SplitEmptyFunction: true 42 | SplitEmptyRecord: true 43 | SplitEmptyNamespace: true 44 | BreakBeforeBinaryOperators: None 45 | BreakBeforeBraces: Attach 46 | BreakBeforeInheritanceComma: false 47 | BreakInheritanceList: BeforeColon 48 | BreakBeforeTernaryOperators: true 49 | BreakConstructorInitializersBeforeComma: false 50 | BreakConstructorInitializers: BeforeColon 51 | BreakAfterJavaFieldAnnotations: false 52 | BreakStringLiterals: true 53 | ColumnLimit: 80 54 | CommentPragmas: '^ IWYU pragma:' 55 | CompactNamespaces: false 56 | ConstructorInitializerAllOnOneLineOrOnePerLine: true 57 | ConstructorInitializerIndentWidth: 4 58 | ContinuationIndentWidth: 4 59 | Cpp11BracedListStyle: true 60 | DeriveLineEnding: true 61 | DerivePointerAlignment: true 62 | DisableFormat: false 63 | ExperimentalAutoDetectBinPacking: false 64 | FixNamespaceComments: true 65 | ForEachMacros: 66 | - foreach 67 | - Q_FOREACH 68 | - BOOST_FOREACH 69 | IncludeBlocks: Regroup 70 | IncludeCategories: 71 | - Regex: '^' 72 | Priority: 2 73 | SortPriority: 0 74 | - Regex: '^<.*\.h>' 75 | Priority: 1 76 | SortPriority: 0 77 | - Regex: '^<.*' 78 | Priority: 2 79 | SortPriority: 0 80 | - Regex: '.*' 81 | Priority: 3 82 | SortPriority: 0 83 | IncludeIsMainRegex: '([-_](test|unittest))?$' 84 | IncludeIsMainSourceRegex: '' 85 | IndentCaseLabels: true 86 | IndentGotoLabels: true 87 | IndentPPDirectives: None 88 | IndentWidth: 4 89 | IndentWrappedFunctionNames: false 90 | JavaScriptQuotes: Leave 91 | JavaScriptWrapImports: true 92 | KeepEmptyLinesAtTheStartOfBlocks: false 93 | MacroBlockBegin: '' 94 | MacroBlockEnd: '' 95 | MaxEmptyLinesToKeep: 1 96 | NamespaceIndentation: None 97 | ObjCBinPackProtocolList: Never 98 | ObjCBlockIndentWidth: 2 99 | ObjCSpaceAfterProperty: false 100 | ObjCSpaceBeforeProtocolList: true 101 | PenaltyBreakAssignment: 2 102 | PenaltyBreakBeforeFirstCallParameter: 1 103 | PenaltyBreakComment: 300 104 | PenaltyBreakFirstLessLess: 120 105 | PenaltyBreakString: 1000 106 | PenaltyBreakTemplateDeclaration: 10 107 | PenaltyExcessCharacter: 1000000 108 | PenaltyReturnTypeOnItsOwnLine: 200 109 | PointerAlignment: Left 110 | RawStringFormats: 111 | - Language: Cpp 112 | Delimiters: 113 | - cc 114 | - CC 115 | - cpp 116 | - Cpp 117 | - CPP 118 | - 'c++' 119 | - 'C++' 120 | CanonicalDelimiter: '' 121 | BasedOnStyle: google 122 | - Language: TextProto 123 | Delimiters: 124 | - pb 125 | - PB 126 | - proto 127 | - PROTO 128 | EnclosingFunctions: 129 | - EqualsProto 130 | - EquivToProto 131 | - PARSE_PARTIAL_TEXT_PROTO 132 | - PARSE_TEST_PROTO 133 | - PARSE_TEXT_PROTO 134 | - ParseTextOrDie 135 | - ParseTextProtoOrDie 136 | CanonicalDelimiter: '' 137 | BasedOnStyle: google 138 | ReflowComments: true 139 | SortIncludes: true 140 | SortUsingDeclarations: true 141 | SpaceAfterCStyleCast: false 142 | SpaceAfterLogicalNot: false 143 | SpaceAfterTemplateKeyword: true 144 | SpaceBeforeAssignmentOperators: true 145 | SpaceBeforeCpp11BracedList: false 146 | SpaceBeforeCtorInitializerColon: true 147 | SpaceBeforeInheritanceColon: true 148 | SpaceBeforeParens: ControlStatements 149 | SpaceBeforeRangeBasedForLoopColon: true 150 | SpaceInEmptyBlock: false 151 | SpaceInEmptyParentheses: false 152 | SpacesBeforeTrailingComments: 2 153 | SpacesInAngles: false 154 | SpacesInConditionalStatement: false 155 | SpacesInContainerLiterals: true 156 | SpacesInCStyleCastParentheses: false 157 | SpacesInParentheses: false 158 | SpacesInSquareBrackets: false 159 | SpaceBeforeSquareBrackets: false 160 | Standard: Auto 161 | StatementMacros: 162 | - Q_UNUSED 163 | - QT_REQUIRE_VERSION 164 | TabWidth: 4 165 | UseCRLF: false 166 | UseTab: Never 167 | ... 168 | 169 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pb 2 | *.pb.cc 3 | *.pb.h 4 | *.o 5 | *.a 6 | test 7 | demo 8 | .vscode/ 9 | build/ 10 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16.3) 2 | project(tensorboard_logger) 3 | 4 | option(BUILD_TEST "Build test" OFF) 5 | 6 | find_package(Protobuf REQUIRED) 7 | 8 | # ----------------------------------------------------------------------------- 9 | # Building the tensorboard_logger library 10 | # ----------------------------------------------------------------------------- 11 | 12 | file(GLOB protos "proto/*.proto") 13 | 14 | protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${protos}) 15 | 16 | add_library(tensorboard_logger 17 | "src/crc.cc" 18 | "src/tensorboard_logger.cc" 19 | ${PROTO_SRCS} 20 | ) 21 | 22 | target_compile_features(tensorboard_logger PRIVATE cxx_std_11) 23 | target_compile_options(tensorboard_logger PRIVATE -Wall -O2) 24 | 25 | target_include_directories(tensorboard_logger 26 | PUBLIC 27 | $ 28 | $ 29 | $ 30 | $ 31 | ) 32 | target_link_libraries(tensorboard_logger PUBLIC ${Protobuf_LIBRARIES}) 33 | 34 | if (BUILD_TEST) 35 | add_executable(tensorboard_logger_test tests/test_tensorboard_logger.cc) 36 | target_compile_features(tensorboard_logger_test PRIVATE cxx_std_11) 37 | target_compile_options(tensorboard_logger_test PRIVATE -Wall -O2) 38 | target_include_directories(tensorboard_logger_test 39 | PRIVATE 40 | $ 41 | ) 42 | target_link_libraries(tensorboard_logger_test tensorboard_logger) 43 | endif() 44 | 45 | # ----------------------------------------------------------------------------- 46 | # Installing the tensorboard_logger library 47 | # ----------------------------------------------------------------------------- 48 | 49 | install( 50 | TARGETS tensorboard_logger 51 | EXPORT tensorboard_logger_Targets 52 | ARCHIVE DESTINATION lib 53 | LIBRARY DESTINATION lib 54 | INCLUDES DESTINATION include 55 | ) 56 | 57 | include(CMakePackageConfigHelpers) 58 | configure_package_config_file( 59 | "${PROJECT_SOURCE_DIR}/cmake/tensorboard_loggerConfig.cmake.in" 60 | "${PROJECT_BINARY_DIR}/tensorboard_loggerConfig.cmake" 61 | INSTALL_DESTINATION 62 | ${CMAKE_INSTALL_PREFIX}/cmake 63 | ) 64 | 65 | install( 66 | EXPORT tensorboard_logger_Targets 67 | FILE tensorboard_loggerTargets.cmake 68 | NAMESPACE tensorboard_logger:: 69 | DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake 70 | ) 71 | 72 | install( 73 | FILES "${PROJECT_BINARY_DIR}/tensorboard_loggerConfig.cmake" 74 | DESTINATION ${CMAKE_INSTALL_PREFIX}/cmake 75 | ) 76 | 77 | install( 78 | DIRECTORY include/ 79 | DESTINATION include 80 | ) 81 | 82 | install( 83 | DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/" 84 | DESTINATION include 85 | FILES_MATCHING 86 | PATTERN "*.pb.h" 87 | PATTERN "CMakeFiles" EXCLUDE 88 | ) 89 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | 3 | LABEL description="Standalone TensorBoard logger API in C++" \ 4 | maintainer="i@toonaive.me" \ 5 | version="1.0" \ 6 | url="https://github.com/RustingSword/tensorboard_logger" 7 | 8 | ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC" 9 | 10 | RUN apt-get update && apt-get install -y \ 11 | g++ \ 12 | cmake \ 13 | make \ 14 | git \ 15 | libprotobuf-dev \ 16 | protobuf-compiler \ 17 | && apt-get clean && rm -rf /var/lib/apt/lists/* 18 | 19 | RUN git clone https://github.com/RustingSword/tensorboard_logger 20 | 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 RustingSword 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | PROTOC = protoc 2 | INCLUDES = -Iinclude 3 | LDFLAGS = -lprotobuf -lpthread 4 | 5 | CC = g++ -std=c++11 -O3 -Wall 6 | 7 | PROTOS = $(wildcard proto/*.proto) 8 | SRCS = $(patsubst proto/%.proto,src/%.pb.cc,$(PROTOS)) 9 | SRCS += src/tensorboard_logger.cc src/crc.cc 10 | OBJS = $(patsubst src/%.cc,src/%.o,$(SRCS)) 11 | 12 | LIB = libtensorboard_logger.a 13 | 14 | .PHONY: all proto obj test clean distclean lib 15 | 16 | all: proto obj lib test 17 | obj: $(OBJS) 18 | 19 | proto: $(PROTOS) 20 | $(PROTOC) -Iproto $(PROTOS) --cpp_out=proto 21 | mv proto/*.cc src 22 | mv proto/*.h include 23 | 24 | $(OBJS): %.o: %.cc proto 25 | $(CC) $(INCLUDES) -c $< -o $@ 26 | 27 | lib: proto obj 28 | ar rcs $(LIB) $(OBJS) 29 | 30 | test: tests/test_tensorboard_logger.cc lib 31 | $(CC) $(INCLUDES) $< $(LIB) -o $@ $(LDFLAGS) 32 | 33 | clean: 34 | rm -rf src/*.o $(LIB) test tfevents.pb demo 35 | 36 | distclean: clean 37 | rm -f include/*.pb.h src/*.pb.cc 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TensorBoard Logger 2 | 3 | Standalone C++ API to log data in TensorBoard format, without any code dependency on TensorFlow or TensorBoard. 4 | 5 | Only support `scalar`, `histogram`, `image`, `audio` `text` and `projector` at the moment. 6 | 7 | ## Using the library 8 | 9 | Protobuf is the only dependency and assumed to be available via cmake's `find_package`. 10 | 11 | To build and install TensorBoard Logger with cmake: 12 | 13 | ```bash 14 | > BUILD_DIR=build 15 | > mkdir -p $BUILD_DIR && cmake -B $BUILD_DIR . && cmake --build $BUILD_DIR -j 16 | > cmake --install $BUILD_DIR 17 | ``` 18 | 19 | Alternatively to build a shared library set `BUILD_SHARED_LIBS=ON`: 20 | 21 | ```bash 22 | > BUILD_DIR=build 23 | > mkdir -p $BUILD_DIR && cmake -B $BUILD_DIR -DBUILD_SHARED_LIBS=ON . && cmake --build $BUILD_DIR -j 24 | > cmake --install $BUILD_DIR 25 | ``` 26 | 27 | Then use `find_package(tensorboard_logger REQUIRED)` in your project. 28 | 29 | Alternatively use via cmake FetchContent: 30 | 31 | ```cmake 32 | FetchContent_Declare( 33 | tensorboard_logger 34 | GIT_REPOSITORY https://github.com/RustingSword/tensorboard_logger.git 35 | GIT_TAG master 36 | ) 37 | FetchContent_MakeAvailable(tensorboard_logger) 38 | ``` 39 | 40 | Make sure to add `tensorboard_logger` to `target_link_libraries` of your projects target. 41 | 42 | To run the test: 43 | 44 | ```bash 45 | > BUILD_DIR=build 46 | > mkdir -p $BUILD_DIR && cmake -DBUILD_TEST=ON -B $BUILD_DIR . && cmake --build $BUILD_DIR -j 47 | > mkdir -p demo && ./$BUILD_DIR/tensorboard_logger_test 48 | > tensorboard --logdir demo # try adding --load_fast=false if you don't see projector tab 49 | ``` 50 | 51 | ## Screenshots 52 | 53 | ![scalar](./assets/scalar.png) 54 | ![histogram](./assets/histogram.png) 55 | ![image](./assets/image.png) 56 | ![audio](./assets/audio.png) 57 | ![text](./assets/text.png) 58 | ![embedding](./assets/embedding.png) 59 | 60 | ## Acknowledgement 61 | 62 | - Inspired by [dmlc tensorboard](https://github.com/dmlc/tensorboard) project. 63 | 64 | - CRC code from [The SNIPPETS Portable C/C++ Source Code Collection](http://web.archive.org/web/20080303102530/http://c.snippets.org/snip_lister.php?fname=crc_32.c), via , with some modifications. 65 | 66 | - Audio sample from [File Examples](https://file-examples.com/index.php/sample-audio-files/sample-wav-download/). 67 | -------------------------------------------------------------------------------- /assets/audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/audio.png -------------------------------------------------------------------------------- /assets/embedding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/embedding.png -------------------------------------------------------------------------------- /assets/file_example_WAV_1MG.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/file_example_WAV_1MG.wav -------------------------------------------------------------------------------- /assets/histogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/histogram.png -------------------------------------------------------------------------------- /assets/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/image.png -------------------------------------------------------------------------------- /assets/meta.tsv: -------------------------------------------------------------------------------- 1 | the_ 2 | , 3 | . 4 | a_ 5 | and_ 6 | of_ 7 | to_ 8 | s_ 9 | is_ 10 | br 11 | in_ 12 | I_ 13 | that_ 14 | this_ 15 | it_ 16 | />< 17 | /> 18 | was_ 19 | The_ 20 | as_ 21 | t_ 22 | with_ 23 | for_ 24 | .< 25 | on_ 26 | but_ 27 | movie_ 28 | ( 29 | are_ 30 | his_ 31 | have_ 32 | film_ 33 | not_ 34 | ing_ 35 | be_ 36 | ed_ 37 | you_ 38 | " 39 | it 40 | d_ 41 | an_ 42 | he_ 43 | by_ 44 | at_ 45 | one_ 46 | who_ 47 | y_ 48 | from_ 49 | e_ 50 | or_ 51 | all_ 52 | like_ 53 | they_ 54 | " 55 | so_ 56 | just_ 57 | has_ 58 | ) 59 | her_ 60 | about_ 61 | out_ 62 | This_ 63 | some_ 64 | ly_ 65 | movie 66 | film 67 | very_ 68 | more_ 69 | It_ 70 | would_ 71 | what_ 72 | when_ 73 | which_ 74 | good_ 75 | if_ 76 | up_ 77 | only_ 78 | even_ 79 | their_ 80 | had_ 81 | really_ 82 | my_ 83 | can_ 84 | no_ 85 | were_ 86 | see_ 87 | she_ 88 | ? 89 | than_ 90 | ! 91 | there_ 92 | get_ 93 | been_ 94 | into_ 95 | - 96 | will_ 97 | much_ 98 | story_ 99 | because_ 100 | ing 101 | time_ 102 | n_ 103 | we_ 104 | ed 105 | me_ 106 | : 107 | most_ 108 | other_ 109 | don 110 | do_ 111 | m_ 112 | es_ 113 | how_ 114 | also_ 115 | make_ 116 | its_ 117 | could_ 118 | first_ 119 | any_ 120 | ' 121 | people_ 122 | great_ 123 | ve_ 124 | ly 125 | er_ 126 | made_ 127 | r_ 128 | But_ 129 | think_ 130 | ' 131 | i_ 132 | bad_ 133 | A_ 134 | And_ 135 | It 136 | on 137 | ; 138 | him_ 139 | being_ 140 | never_ 141 | way_ 142 | that 143 | many_ 144 | then_ 145 | where_ 146 | two_ 147 | In_ 148 | after_ 149 | too_ 150 | little_ 151 | you 152 | ), 153 | well_ 154 | ng_ 155 | your_ 156 | If_ 157 | l_ 158 | ). 159 | does_ 160 | ever_ 161 | them_ 162 | did_ 163 | watch_ 164 | know_ 165 | seen_ 166 | time 167 | er 168 | character_ 169 | over_ 170 | characters_ 171 | movies_ 172 | man_ 173 | There_ 174 | love_ 175 | best_ 176 | still_ 177 | off_ 178 | such_ 179 | in 180 | should_ 181 | the 182 | re_ 183 | He_ 184 | plot_ 185 | films_ 186 | go_ 187 | these_ 188 | acting_ 189 | doesn 190 | es 191 | show_ 192 | through_ 193 | better_ 194 | al_ 195 | something_ 196 | didn 197 | back_ 198 | those_ 199 | us_ 200 | less_ 201 | ... 202 | say_ 203 | is 204 | one 205 | makes_ 206 | and 207 | can 208 | all 209 | ion_ 210 | find_ 211 | scene_ 212 | old_ 213 | real_ 214 | few_ 215 | going_ 216 | well 217 | actually_ 218 | watching_ 219 | life_ 220 | me 221 | . < 222 | o_ 223 | man 224 | there 225 | scenes_ 226 | same_ 227 | he 228 | end_ 229 | this 230 | ... 231 | k_ 232 | while_ 233 | thing_ 234 | of 235 | look_ 236 | quite_ 237 | out 238 | lot_ 239 | want_ 240 | why_ 241 | seems_ 242 | every_ 243 | ll_ 244 | pretty_ 245 | got_ 246 | able_ 247 | nothing_ 248 | good 249 | As_ 250 | story 251 | & 252 | another_ 253 | take_ 254 | to 255 | years_ 256 | between_ 257 | give_ 258 | am_ 259 | work_ 260 | isn 261 | part_ 262 | before_ 263 | actors_ 264 | may_ 265 | gets_ 266 | young_ 267 | down_ 268 | around_ 269 | ng 270 | thought_ 271 | though_ 272 | end 273 | without_ 274 | What_ 275 | They_ 276 | things_ 277 | life 278 | always_ 279 | must_ 280 | cast_ 281 | almost_ 282 | h_ 283 | 10 284 | saw_ 285 | own_ 286 | here 287 | bit_ 288 | come_ 289 | both_ 290 | might_ 291 | g_ 292 | whole_ 293 | new_ 294 | director_ 295 | them 296 | horror_ 297 | ce 298 | You_ 299 | least_ 300 | bad 301 | big_ 302 | enough_ 303 | him 304 | feel_ 305 | probably_ 306 | up 307 | here_ 308 | making_ 309 | long_ 310 | her 311 | st_ 312 | kind_ 313 | -- 314 | original_ 315 | fact_ 316 | rather_ 317 | or 318 | far_ 319 | nt_ 320 | played_ 321 | found_ 322 | last_ 323 | movies 324 | When_ 325 | so 326 | ", 327 | comes_ 328 | action_ 329 | She_ 330 | ve 331 | our_ 332 | anything_ 333 | funny_ 334 | ion 335 | right_ 336 | way 337 | trying_ 338 | now_ 339 | ous_ 340 | each_ 341 | done_ 342 | since_ 343 | ic_ 344 | point_ 345 | ". 346 | wasn 347 | interesting_ 348 | c_ 349 | worst_ 350 | te_ 351 | le_ 352 | ble_ 353 | ty_ 354 | looks_ 355 | show 356 | put_ 357 | looking_ 358 | especially_ 359 | believe_ 360 | en_ 361 | goes_ 362 | over 363 | ce_ 364 | p_ 365 | films 366 | hard_ 367 | main_ 368 | be 369 | having_ 370 | ry 371 | TV_ 372 | worth_ 373 | One_ 374 | do 375 | al 376 | re 377 | again 378 | series_ 379 | takes_ 380 | guy_ 381 | family_ 382 | seem_ 383 | plays_ 384 | role_ 385 | away_ 386 | world_ 387 | My_ 388 | character 389 | , " 390 | performance_ 391 | 2_ 392 | So_ 393 | watched_ 394 | John_ 395 | th_ 396 | plot 397 | script_ 398 | For_ 399 | sure_ 400 | characters 401 | set_ 402 | different_ 403 | minutes_ 404 | All_ 405 | American_ 406 | anyone_ 407 | Not_ 408 | music_ 409 | ry_ 410 | shows_ 411 | too 412 | son_ 413 | en 414 | day_ 415 | use_ 416 | someone_ 417 | for 418 | woman_ 419 | yet_ 420 | ." 421 | during_ 422 | she 423 | ro 424 | - 425 | times_ 426 | left_ 427 | used_ 428 | le 429 | three_ 430 | play_ 431 | work 432 | ness_ 433 | We_ 434 | girl_ 435 | comedy_ 436 | ment_ 437 | an 438 | simply_ 439 | off 440 | ies_ 441 | funny 442 | ne 443 | acting 444 | That_ 445 | fun_ 446 | completely_ 447 | st 448 | seeing_ 449 | us 450 | te 451 | special_ 452 | ation_ 453 | as 454 | ive_ 455 | ful_ 456 | read_ 457 | reason_ 458 | co 459 | need_ 460 | sa 461 | true_ 462 | ted_ 463 | like 464 | ck 465 | place_ 466 | they 467 | 10_ 468 | However 469 | until_ 470 | rest_ 471 | sense_ 472 | ity_ 473 | everything_ 474 | people 475 | nt 476 | ending_ 477 | again_ 478 | ers_ 479 | given_ 480 | idea_ 481 | let_ 482 | nice_ 483 | help_ 484 | no 485 | truly_ 486 | beautiful_ 487 | ter 488 | ck_ 489 | version_ 490 | try_ 491 | came_ 492 | Even_ 493 | DVD_ 494 | se 495 | mis 496 | scene 497 | job_ 498 | ting_ 499 | Me 500 | At_ 501 | who 502 | money_ 503 | ment 504 | ch 505 | recommend_ 506 | was 507 | once_ 508 | getting_ 509 | tell_ 510 | de_ 511 | gives_ 512 | not 513 | Lo 514 | we 515 | son 516 | shot_ 517 | second_ 518 | After_ 519 | To_ 520 | high_ 521 | screen_ 522 | -- 523 | keep_ 524 | felt_ 525 | with 526 | great 527 | everyone_ 528 | although_ 529 | poor_ 530 | el 531 | half_ 532 | playing_ 533 | couple_ 534 | now 535 | ble 536 | excellent_ 537 | enjoy_ 538 | couldn 539 | x_ 540 | ne_ 541 | ," 542 | ie_ 543 | go 544 | become_ 545 | less 546 | himself_ 547 | supposed_ 548 | won 549 | understand_ 550 | seen 551 | ally_ 552 | THE_ 553 | se_ 554 | actor_ 555 | ts_ 556 | small_ 557 | line_ 558 | na 559 | audience_ 560 | fan_ 561 | et 562 | world 563 | entire_ 564 | said_ 565 | at 566 | 3_ 567 | scenes 568 | rs_ 569 | full_ 570 | year_ 571 | men_ 572 | ke 573 | doing_ 574 | went_ 575 | director 576 | back 577 | early_ 578 | Hollywood_ 579 | start_ 580 | liked_ 581 | against_ 582 | remember_ 583 | love 584 | He 585 | along_ 586 | ic 587 | His_ 588 | wife_ 589 | effects_ 590 | together_ 591 | ch_ 592 | Ra 593 | ty 594 | maybe_ 595 | age 596 | S_ 597 | While_ 598 | often_ 599 | sort_ 600 | definitely_ 601 | No 602 | script 603 | times 604 | absolutely_ 605 | book_ 606 | day 607 | human_ 608 | There 609 | top_ 610 | ta 611 | becomes_ 612 | piece_ 613 | waste_ 614 | seemed_ 615 | down 616 | 5_ 617 | later_ 618 | rs 619 | ja 620 | certainly_ 621 | budget_ 622 | th 623 | nce_ 624 | 200 625 | . ( 626 | age_ 627 | next_ 628 | ar 629 | several_ 630 | ling_ 631 | short_ 632 | sh 633 | fe 634 | Of_ 635 | instead_ 636 | Man 637 | T_ 638 | right 639 | father_ 640 | actors 641 | wanted_ 642 | cast 643 | black_ 644 | Don 645 | more 646 | 1_ 647 | comedy 648 | better 649 | camera_ 650 | wonderful_ 651 | production_ 652 | inter 653 | course 654 | low_ 655 | else_ 656 | w_ 657 | ness 658 | course_ 659 | based_ 660 | ti 661 | Some_ 662 | know 663 | house_ 664 | say 665 | de 666 | watch 667 | ous 668 | pro 669 | tries_ 670 | ra 671 | kids_ 672 | etc 673 | – 674 | loved_ 675 | est_ 676 | fun 677 | made 678 | video_ 679 | un 680 | totally_ 681 | Michael_ 682 | ho 683 | mind_ 684 | No_ 685 | Be 686 | ive 687 | La 688 | Fi 689 | du 690 | ers 691 | Well 692 | wants_ 693 | How_ 694 | series 695 | performances_ 696 | written_ 697 | live_ 698 | New_ 699 | So 700 | Ne 701 | Na 702 | night_ 703 | ge 704 | gave_ 705 | home_ 706 | heart 707 | women_ 708 | nu 709 | ss_ 710 | hope_ 711 | ci 712 | friends_ 713 | Se 714 | years 715 | sub 716 | head_ 717 | Y_ 718 | Du 719 | . " 720 | turn_ 721 | red_ 722 | perfect_ 723 | already_ 724 | classic_ 725 | tri 726 | ss 727 | person_ 728 | star_ 729 | screen 730 | style_ 731 | ur 732 | starts_ 733 | under_ 734 | Then_ 735 | ke_ 736 | ine 737 | ies 738 | um 739 | ie 740 | face_ 741 | ir 742 | enjoyed_ 743 | point 744 | lines_ 745 | Mr 746 | turns_ 747 | what 748 | side_ 749 | sex_ 750 | Ha 751 | final_ 752 | ).< 753 | With_ 754 | care_ 755 | tion_ 756 | She 757 | ation 758 | Ar 759 | ma 760 | problem_ 761 | lost_ 762 | are 763 | li 764 | 4_ 765 | fully_ 766 | oo 767 | sha 768 | Just_ 769 | name_ 770 | ina 771 | boy_ 772 | finally_ 773 | ol 774 | !< 775 | Bo 776 | about 777 | though 778 | hand 779 | ton 780 | lead_ 781 | school_ 782 | ns 783 | ha 784 | favorite_ 785 | stupid_ 786 | gi 787 | original 788 | mean_ 789 | To 790 | took_ 791 | either_ 792 | ni 793 | book 794 | episode_ 795 | om 796 | Su 797 | D_ 798 | Mc 799 | house 800 | cannot_ 801 | stars_ 802 | behind_ 803 | see 804 | other 805 | Che 806 | role 807 | art 808 | ever 809 | Why_ 810 | father 811 | case_ 812 | tic_ 813 | moments_ 814 | Co 815 | works_ 816 | sound_ 817 | Ta 818 | guess_ 819 | perhaps_ 820 | Vi 821 | thing 822 | fine_ 823 | fact 824 | music 825 | non 826 | ful 827 | action 828 | ity 829 | ct 830 | ate_ 831 | type_ 832 | lack_ 833 | death_ 834 | art_ 835 | able 836 | Ja 837 | ge_ 838 | wouldn 839 | am 840 | tor 841 | extremely_ 842 | pre 843 | self 844 | Mor 845 | particularly_ 846 | bo 847 | est 848 | Ba 849 | ya 850 | play 851 | Pa 852 | ther 853 | heard_ 854 | however 855 | ver 856 | dy_ 857 | Sa 858 | ding_ 859 | led_ 860 | late_ 861 | feeling_ 862 | per 863 | low 864 | ably_ 865 | Un 866 | On_ 867 | known_ 868 | kill_ 869 | fight_ 870 | beginning_ 871 | cat 872 | bit 873 | title_ 874 | vo 875 | short 876 | old 877 | including_ 878 | Da 879 | coming_ 880 | That 881 | place 882 | looked_ 883 | best 884 | Lu 885 | ent_ 886 | bla 887 | quality_ 888 | except_ 889 | ...< 890 | ff 891 | decent_ 892 | much 893 | De 894 | Bu 895 | ter_ 896 | attempt_ 897 | Bi 898 | taking_ 899 | ig 900 | Ti 901 | whose_ 902 | dialogue_ 903 | zz 904 | war_ 905 | ill 906 | Te 907 | war 908 | Hu 909 | James_ 910 | .. 911 | under 912 | ring_ 913 | pa 914 | ot 915 | expect_ 916 | Ga 917 | itself_ 918 | line 919 | lives_ 920 | let 921 | Dr 922 | mp 923 | che 924 | mean 925 | called_ 926 | complete_ 927 | terrible_ 928 | boring_ 929 | others_ 930 | " ( 931 | aren 932 | star 933 | long 934 | Li 935 | mother_ 936 | si 937 | highly_ 938 | ab 939 | ex 940 | os 941 | nd 942 | ten_ 943 | ten 944 | run_ 945 | directed_ 946 | town_ 947 | friend_ 948 | David_ 949 | taken_ 950 | finds_ 951 | fans_ 952 | Mar 953 | writing_ 954 | white_ 955 | u_ 956 | obviously_ 957 | mar 958 | Ho 959 | year 960 | stop_ 961 | f_ 962 | leave_ 963 | king_ 964 | act_ 965 | mind 966 | entertaining_ 967 | ish_ 968 | Ka 969 | throughout_ 970 | viewer_ 971 | despite_ 972 | Robert_ 973 | somewhat_ 974 | hour_ 975 | car_ 976 | evil_ 977 | Although_ 978 | wrong_ 979 | Ro 980 | dead_ 981 | body_ 982 | awful_ 983 | home 984 | exactly_ 985 | bi 986 | family 987 | ts 988 | usually_ 989 | told_ 990 | z_ 991 | oc 992 | minutes 993 | tra 994 | some 995 | actor 996 | den 997 | but 998 | Sha 999 | tu 1000 | strong_ 1001 | Jo 1002 | real 1003 | la 1004 | gin 1005 | ul 1006 | amazing_ 1007 | save_ 1008 | wrong 1009 | dis 1010 | obvious_ 1011 | close_ 1012 | sometimes_ 1013 | shown_ 1014 | head 1015 | land 1016 | Go 1017 | mer 1018 | ending 1019 | else 1020 | audience 1021 | su 1022 | parts_ 1023 | ga 1024 | before 1025 | cinema 1026 | opening_ 1027 | laugh_ 1028 | Ca 1029 | sh_ 1030 | guys_ 1031 | ds_ 1032 | number_ 1033 | Ma 1034 | soon_ 1035 | ob 1036 | po 1037 | wonder_ 1038 | group_ 1039 | men 1040 | Mac 1041 | thinking_ 1042 | fan 1043 | across_ 1044 | turned_ 1045 | ant 1046 | tells_ 1047 | em 1048 | night 1049 | ton_ 1050 | picture_ 1051 | past_ 1052 | Hi 1053 | girl 1054 | ght 1055 | woman 1056 | started_ 1057 | ba 1058 | Ru 1059 | da 1060 | wi 1061 | running_ 1062 | part 1063 | wish_ 1064 | ner 1065 | ap 1066 | rn 1067 | ant_ 1068 | mon 1069 | ast 1070 | awful 1071 | Yes 1072 | The 1073 | ard 1074 | nce 1075 | era 1076 | today 1077 | ad 1078 | Now_ 1079 | .) 1080 | local_ 1081 | killer_ 1082 | huge_ 1083 | flick 1084 | ends_ 1085 | light 1086 | ons_ 1087 | Al 1088 | knew_ 1089 | due_ 1090 | direction_ 1091 | close 1092 | Gra 1093 | od 1094 | giving_ 1095 | Le 1096 | op 1097 | Pe 1098 | ey_ 1099 | wa 1100 | sta 1101 | worse_ 1102 | single_ 1103 | cut_ 1104 | light_ 1105 | ia 1106 | happens_ 1107 | supporting_ 1108 | room_ 1109 | girls_ 1110 | female_ 1111 | E_ 1112 | falls_ 1113 | nd_ 1114 | ish 1115 | mostly_ 1116 | tan 1117 | major_ 1118 | bring_ 1119 | killed_ 1120 | ele 1121 | el_ 1122 | dark_ 1123 | myself_ 1124 | Pro 1125 | ent 1126 | ated_ 1127 | British_ 1128 | va 1129 | .... 1130 | talking_ 1131 | con 1132 | tion 1133 | children_ 1134 | by 1135 | voice_ 1136 | sense 1137 | Car 1138 | .. 1139 | ain 1140 | For 1141 | Con 1142 | performance 1143 | au 1144 | stories_ 1145 | ine_ 1146 | Or 1147 | order_ 1148 | first 1149 | ac 1150 | 8_ 1151 | involved_ 1152 | interesting 1153 | drama_ 1154 | Dan 1155 | away 1156 | From_ 1157 | ping_ 1158 | boy 1159 | air 1160 | sing_ 1161 | lle 1162 | You 1163 | lo 1164 | ian 1165 | ingly_ 1166 | ia_ 1167 | haven 1168 | using_ 1169 | fo 1170 | dy 1171 | modern_ 1172 | ST 1173 | wife 1174 | unt 1175 | game_ 1176 | together 1177 | pp 1178 | clearly_ 1179 | First_ 1180 | sad 1181 | ris 1182 | ven 1183 | col 1184 | Maybe_ 1185 | val 1186 | sexual_ 1187 | serious_ 1188 | relationship_ 1189 | musical_ 1190 | boring 1191 | But 1192 | hit_ 1193 | brilliant_ 1194 | easily_ 1195 | living_ 1196 | ca 1197 | police_ 1198 | ip 1199 | , 1200 | feels_ 1201 | effects 1202 | sex 1203 | ist_ 1204 | die 1205 | para 1206 | ort 1207 | humor_ 1208 | Cor 1209 | ist 1210 | et_ 1211 | Richard_ 1212 | call_ 1213 | example 1214 | appears_ 1215 | actress_ 1216 | rit 1217 | matter_ 1218 | ar_ 1219 | ns_ 1220 | needs_ 1221 | important_ 1222 | fli 1223 | ec 1224 | stupid 1225 | ee 1226 | change_ 1227 | bur 1228 | . 1229 | comic_ 1230 | DVD 1231 | We 1232 | ?< 1233 | Paul_ 1234 | child_ 1235 | ag 1236 | enjoy 1237 | cha 1238 | actual_ 1239 | says_ 1240 | nearly_ 1241 | heart_ 1242 | did 1243 | similar_ 1244 | side 1245 | ru 1246 | ped_ 1247 | und 1248 | super 1249 | name 1250 | clear_ 1251 | ', 1252 | cu 1253 | child 1254 | moment_ 1255 | ions_ 1256 | fall_ 1257 | done 1258 | chance_ 1259 | then 1260 | ian_ 1261 | George_ 1262 | exc 1263 | enough 1264 | Jack_ 1265 | win 1266 | Di 1267 | ying_ 1268 | said 1269 | 80 1270 | ze 1271 | example_ 1272 | themselves_ 1273 | named_ 1274 | ger 1275 | near_ 1276 | guy 1277 | car 1278 | horrible_ 1279 | bri 1280 | !! 1281 | ori 1282 | his 1283 | ded_ 1284 | An_ 1285 | released_ 1286 | laugh 1287 | kept_ 1288 | beyond_ 1289 | b_ 1290 | Sch 1291 | An 1292 | Lan 1293 | In 1294 | gar 1295 | genre 1296 | cho 1297 | Har 1298 | title 1299 | romantic_ 1300 | mother 1301 | English_ 1302 | mention_ 1303 | interest_ 1304 | Its_ 1305 | money 1306 | face 1307 | brought_ 1308 | ut 1309 | after 1310 | Win 1311 | working_ 1312 | ny 1313 | knows_ 1314 | happened_ 1315 | certain_ 1316 | 6_ 1317 | within_ 1318 | usual_ 1319 | upon_ 1320 | il 1321 | Her_ 1322 | from 1323 | drama 1324 | Si 1325 | Mo 1326 | God 1327 | five_ 1328 | whether_ 1329 | tried_ 1330 | ial_ 1331 | history_ 1332 | far 1333 | Re 1334 | novel 1335 | chi 1336 | inc 1337 | ure_ 1338 | ied_ 1339 | anti 1340 | Mad 1341 | lly_ 1342 | Is_ 1343 | 7_ 1344 | ess 1345 | bunch_ 1346 | vin 1347 | slow_ 1348 | style 1349 | hi 1350 | eyes_ 1351 | cinema_ 1352 | showing_ 1353 | gen 1354 | ra_ 1355 | among_ 1356 | unc 1357 | Po 1358 | Peter_ 1359 | kid_ 1360 | ght_ 1361 | ny_ 1362 | gh 1363 | tro 1364 | four_ 1365 | ue 1366 | ley_ 1367 | stuff_ 1368 | strange_ 1369 | sit_ 1370 | sch 1371 | anyway 1372 | 199 1373 | hours_ 1374 | These_ 1375 | Most_ 1376 | own 1377 | ned_ 1378 | ban 1379 | Fa 1380 | decided_ 1381 | xi 1382 | top 1383 | ll 1384 | get 1385 | events_ 1386 | Also_ 1387 | typical_ 1388 | shots_ 1389 | look 1390 | happy_ 1391 | um_ 1392 | simple_ 1393 | either 1394 | comment 1395 | ssi 1396 | ps 1397 | Bar 1398 | Per 1399 | saying_ 1400 | none_ 1401 | surprised_ 1402 | sse 1403 | ka 1404 | ily_ 1405 | horror 1406 | dig 1407 | tt 1408 | ric 1409 | post 1410 | TV 1411 | 198 1412 | * 1413 | half 1414 | gn 1415 | ste 1416 | ls 1417 | hero_ 1418 | Pi 1419 | Like_ 1420 | sad_ 1421 | hear_ 1422 | begins_ 1423 | rent_ 1424 | ure 1425 | rie 1426 | greatest_ 1427 | Je 1428 | van 1429 | sci 1430 | kid 1431 | himself 1432 | Also 1433 | view_ 1434 | score_ 1435 | dge 1436 | became_ 1437 | Cra 1438 | 197 1439 | ones_ 1440 | cal 1441 | 9_ 1442 | hor 1443 | hand_ 1444 | days_ 1445 | yourself_ 1446 | tle 1447 | gan 1448 | ea 1449 | ago 1450 | WA 1451 | pen 1452 | ls_ 1453 | learn_ 1454 | Sta 1455 | By_ 1456 | middle_ 1457 | job 1458 | uc 1459 | ko 1460 | bar 1461 | lots_ 1462 | cheap_ 1463 | fi 1464 | stay_ 1465 | stand_ 1466 | pri 1467 | za 1468 | im 1469 | ight 1470 | happen_ 1471 | Ab 1472 | Gar 1473 | ore 1474 | lan 1475 | classic 1476 | writer_ 1477 | ster 1478 | picture 1479 | hate_ 1480 | der 1481 | grand 1482 | disc 1483 | Mi 1484 | ud 1485 | é 1486 | murder_ 1487 | basically_ 1488 | jokes_ 1489 | famous_ 1490 | eg 1491 | easy_ 1492 | rm 1493 | der_ 1494 | R_ 1495 | Mat 1496 | two 1497 | daughter 1498 | Spi 1499 | camera 1500 | AN 1501 | glo 1502 | talk_ 1503 | daughter_ 1504 | Fre 1505 | ri 1506 | perfect 1507 | experience_ 1508 | buy_ 1509 | zo 1510 | bu 1511 | Pu 1512 | Col 1513 | uni 1514 | later 1515 | children 1516 | sets_ 1517 | annoying_ 1518 | Tom_ 1519 | uses_ 1520 | jo 1521 | dead 1522 | psycho 1523 | mid 1524 | room 1525 | ki 1526 | hope 1527 | dialogue 1528 | attention_ 1529 | cc 1530 | above_ 1531 | possibly_ 1532 | mo 1533 | difficult_ 1534 | Mon 1535 | Japanese_ 1536 | !" 1537 | death 1538 | class_ 1539 | : " 1540 | tic 1541 | ler 1542 | bus 1543 | genre_ 1544 | stre 1545 | keeps_ 1546 | cre 1547 | una 1548 | tly_ 1549 | leaves_ 1550 | RE 1551 | yes 1552 | realize_ 1553 | nor_ 1554 | figure_ 1555 | Chan 1556 | rec 1557 | minute_ 1558 | leading_ 1559 | high 1560 | gui 1561 | ug 1562 | sequence_ 1563 | na_ 1564 | help 1565 | ani 1566 | Who_ 1567 | exist 1568 | documentary_ 1569 | sal 1570 | pe 1571 | key_ 1572 | Bra 1573 | murder 1574 | leg 1575 | songs_ 1576 | production 1577 | dle 1578 | cla 1579 | arm 1580 | US 1581 | '. 1582 | reason 1583 | moving_ 1584 | alone_ 1585 | Ko 1586 | Bel 1587 | fu 1588 | elements_ 1589 | Ste 1590 | prof 1591 | ning_ 1592 | ey 1593 | dark 1594 | tur 1595 | les_ 1596 | Ni 1597 | NOT_ 1598 | ps_ 1599 | bor 1600 | ary_ 1601 | />" 1602 | tter 1603 | level_ 1604 | ys 1605 | apparently_ 1606 | poorly_ 1607 | meets_ 1608 | killing_ 1609 | id 1610 | ging_ 1611 | ep 1612 | emotional_ 1613 | brings_ 1614 | means_ 1615 | fla 1616 | episodes_ 1617 | doubt_ 1618 | camp 1619 | ME 1620 | Ad 1621 | sen 1622 | opinion 1623 | nch 1624 | ell 1625 | Ri 1626 | writer 1627 | something 1628 | Fe 1629 | flick_ 1630 | flaw 1631 | ath 1632 | net 1633 | lines 1634 | cinematography_ 1635 | straight_ 1636 | slow 1637 | lu 1638 | ber 1639 | shi 1640 | husband_ 1641 | forward_ 1642 | form_ 1643 | cra 1644 | ay 1645 | Fo 1646 | Another_ 1647 | wo 1648 | whom_ 1649 | reality_ 1650 | hold_ 1651 | Chi 1652 | Bro 1653 | roles_ 1654 | move_ 1655 | fire 1656 | brother_ 1657 | Gi 1658 | Ben 1659 | review 1660 | que 1661 | cri 1662 | television_ 1663 | overall_ 1664 | French_ 1665 | violence_ 1666 | lla 1667 | enti 1668 | ass 1669 | previous_ 1670 | forced_ 1671 | cop 1672 | Oscar_ 1673 | DE 1674 | possible_ 1675 | hat 1676 | ear 1677 | budget 1678 | Tu 1679 | Ber 1680 | start 1681 | nti 1682 | hard 1683 | yn 1684 | school 1685 | deal_ 1686 | rest 1687 | problems_ 1688 | lie 1689 | ite 1690 | cool_ 1691 | add_ 1692 | towards_ 1693 | reading_ 1694 | LO 1695 | Gold 1696 | regard 1697 | itself 1698 | OK 1699 | leads_ 1700 | id_ 1701 | ved_ 1702 | moments 1703 | dia 1704 | aw 1705 | !) 1706 | $ 1707 | write_ 1708 | theme_ 1709 | Wo 1710 | filmed_ 1711 | use 1712 | talent_ 1713 | silly_ 1714 | personal_ 1715 | performances 1716 | needed_ 1717 | mit 1718 | meant_ 1719 | cli 1720 | Sho 1721 | tain 1722 | Pri 1723 | whi 1724 | comments_ 1725 | city_ 1726 | various_ 1727 | sing 1728 | rate_ 1729 | create_ 1730 | respect 1731 | port 1732 | act 1733 | 194 1734 | message_ 1735 | ted 1736 | dance_ 1737 | case 1738 | ves_ 1739 | song_ 1740 | somehow_ 1741 | incredibly_ 1742 | points_ 1743 | manages_ 1744 | career_ 1745 | begin_ 1746 | Tra 1747 | RI 1748 | 20_ 1749 | lai 1750 | interested_ 1751 | terrible 1752 | hell_ 1753 | har 1754 | Ku 1755 | Ger 1756 | video 1757 | ren 1758 | ky_ 1759 | Ap 1760 | review_ 1761 | ds 1762 | blood 1763 | worse 1764 | new 1765 | des 1766 | ways_ 1767 | read 1768 | herself_ 1769 | fre 1770 | * 1771 | set 1772 | rated_ 1773 | friends 1774 | feature_ 1775 | eventually_ 1776 | blood_ 1777 | Sea 1778 | ving_ 1779 | enjoyable_ 1780 | appear_ 1781 | Stan 1782 | SE 1783 | thought 1784 | suit 1785 | qui 1786 | political_ 1787 | person 1788 | les 1789 | gla 1790 | around 1791 | think 1792 | len 1793 | hit 1794 | direction 1795 | tale_ 1796 | mess 1797 | dramatic_ 1798 | ual_ 1799 | gore_ 1800 | Can 1801 | Am 1802 | ver_ 1803 | others 1804 | ju 1805 | fairly_ 1806 | dan 1807 | power_ 1808 | dro 1809 | count 1810 | Her 1811 | une 1812 | third_ 1813 | rop 1814 | crap 1815 | ai 1816 | ade 1817 | Joe_ 1818 | town 1819 | ridiculous_ 1820 | gone_ 1821 | William_ 1822 | particular_ 1823 | older_ 1824 | male_ 1825 | humor 1826 | ard_ 1827 | where 1828 | run 1829 | ld 1830 | bb 1831 | C_ 1832 | ther_ 1833 | sp 1834 | plenty_ 1835 | ling 1836 | future_ 1837 | stars 1838 | sin 1839 | pi 1840 | meet_ 1841 | lt 1842 | da_ 1843 | check_ 1844 | En 1845 | ?" 1846 | ball 1847 | animation_ 1848 | ta_ 1849 | King_ 1850 | hardly_ 1851 | cul 1852 | 60 1853 | rt 1854 | Is 1855 | rai 1856 | land_ 1857 | clu 1858 | wise 1859 | fast_ 1860 | class 1861 | bra 1862 | worked_ 1863 | question 1864 | per_ 1865 | ok 1866 | expecting_ 1867 | front_ 1868 | come 1869 | Cu 1870 | scary_ 1871 | past 1872 | hero 1873 | Mel 1874 | gri 1875 | average_ 1876 | writers_ 1877 | nk 1878 | fashion 1879 | dream 1880 | bear 1881 | attempts_ 1882 | stand 1883 | total_ 1884 | through 1885 | sm 1886 | ms 1887 | ice 1888 | gs_ 1889 | eye 1890 | effort_ 1891 | ale 1892 | warm 1893 | note 1894 | ger_ 1895 | follow_ 1896 | cro 1897 | vis 1898 | subject_ 1899 | reviews_ 1900 | mm 1901 | ect 1902 | Wa 1903 | Rob 1904 | imagine_ 1905 | however_ 1906 | decides_ 1907 | brother 1908 | achieve 1909 | things 1910 | stage_ 1911 | sound 1912 | rating_ 1913 | ously_ 1914 | ier 1915 | features_ 1916 | ase 1917 | Vo 1918 | really 1919 | pay 1920 | pal 1921 | filled_ 1922 | Disney_ 1923 | telling_ 1924 | join 1925 | coa 1926 | Lee_ 1927 | team_ 1928 | ov 1929 | emp 1930 | days 1931 | bin 1932 | ann 1933 | ally 1934 | women 1935 | social_ 1936 | friend 1937 | vic 1938 | novel_ 1939 | gle 1940 | ance_ 1941 | weak_ 1942 | viewers_ 1943 | sy 1944 | fort 1945 | idea 1946 | Mu 1947 | MA 1948 | thriller 1949 | medi 1950 | forget_ 1951 | York_ 1952 | Au 1953 | stuff 1954 | ons 1955 | hilarious_ 1956 | career 1957 | Ke 1958 | Christ 1959 | ors_ 1960 | mentioned_ 1961 | mark 1962 | def 1963 | watching 1964 | version 1965 | lor 1966 | flo 1967 | country_ 1968 | G_ 1969 | Bat 1970 | plain_ 1971 | Sam 1972 | Anyway 1973 | lic 1974 | expected_ 1975 | Tru 1976 | Great_ 1977 | Ser 1978 | N_ 1979 | And 1980 | ?) 1981 | san 1982 | hr 1983 | Ham 1984 | pay_ 1985 | lea 1986 | hol 1987 | Unfortunately 1988 | Luc 1989 | uti 1990 | row 1991 | history 1992 | bea 1993 | What 1994 | Or_ 1995 | unless_ 1996 | ica 1997 | episode 1998 | stra 1999 | sounds_ 2000 | ability_ 2001 | Cha 2002 | sco 2003 | represent 2004 | portrayed_ 2005 | outs 2006 | dri 2007 | crap_ 2008 | Oh 2009 | word_ 2010 | open_ 2011 | fantastic_ 2012 | II 2013 | power 2014 | ical_ 2015 | badly_ 2016 | Well_ 2017 | IN 2018 | Angel 2019 | waiting_ 2020 | sees_ 2021 | mor 2022 | ari 2023 | tom 2024 | sli 2025 | nation 2026 | mi 2027 | inf 2028 | Mil 2029 | viewing_ 2030 | rt_ 2031 | premise_ 2032 | ma_ 2033 | fit_ 2034 | wl 2035 | unique_ 2036 | talent 2037 | stay 2038 | fails_ 2039 | breath 2040 | thi 2041 | ert 2042 | Sco 2043 | talk 2044 | slightly_ 2045 | je 2046 | ah 2047 | NE 2048 | Fin 2049 | ridiculous 2050 | la_ 2051 | Ki 2052 | vir 2053 | hea 2054 | ely_ 2055 | beautiful 2056 | admit_ 2057 | pu 2058 | crime_ 2059 | comment_ 2060 | 0_ 2061 | shot 2062 | free_ 2063 | entertaining 2064 | deserves_ 2065 | mas 2066 | dialog_ 2067 | hip 2068 | ff_ 2069 | talented_ 2070 | runs_ 2071 | ini 2072 | ew 2073 | ded 2074 | Gri 2075 | roles 2076 | realistic_ 2077 | clo 2078 | ana 2079 | Rat 2080 | Oh_ 2081 | Man_ 2082 | Den 2083 | spent_ 2084 | rse 2085 | die_ 2086 | Spe 2087 | Dra 2088 | ord 2089 | mal 2090 | ism 2091 | del 2092 | War 2093 | Cro 2094 | nn 2095 | min 2096 | fighting_ 2097 | excellent 2098 | ct_ 2099 | ask_ 2100 | abo 2101 | parents_ 2102 | ou 2103 | flash 2104 | Ver 2105 | Star 2106 | ym 2107 | score 2108 | nature_ 2109 | den_ 2110 | cou 2111 | body 2112 | aff 2113 | Ze 2114 | Pat 2115 | Mal 2116 | lab 2117 | wing_ 2118 | theater_ 2119 | sho 2120 | ow 2121 | mini 2122 | biggest_ 2123 | Best_ 2124 | wrote_ 2125 | perfectly_ 2126 | pack 2127 | ile 2128 | bly_ 2129 | agree_ 2130 | Perhaps_ 2131 | -- 2132 | sign 2133 | di 2134 | cer 2135 | caught_ 2136 | Good_ 2137 | visual_ 2138 | roll 2139 | my 2140 | memorable_ 2141 | kids 2142 | ise_ 2143 | hin 2144 | bre 2145 | beat 2146 | ring 2147 | reveal 2148 | res 2149 | pit 2150 | fa 2151 | 70 2152 | words_ 2153 | wn 2154 | wait_ 2155 | storyline_ 2156 | make 2157 | ended_ 2158 | ship_ 2159 | ose 2160 | hot_ 2161 | add 2162 | DO 2163 | ib 2164 | eri 2165 | directors_ 2166 | amount_ 2167 | Sure 2168 | ua 2169 | tin 2170 | mu 2171 | hilarious 2172 | eti 2173 | deep_ 2174 | battle_ 2175 | bas 2176 | Pre 2177 | Ali 2178 | tre 2179 | tie 2180 | thriller_ 2181 | spirit 2182 | sister 2183 | ship 2184 | ser 2185 | rl 2186 | rich_ 2187 | outside_ 2188 | ato 2189 | ad_ 2190 | Do 2191 | weren 2192 | sla 2193 | ro_ 2194 | large_ 2195 | craft 2196 | Shi 2197 | ye 2198 | true 2199 | spend_ 2200 | rd 2201 | entirely_ 2202 | Do_ 2203 | wit 2204 | quickly_ 2205 | powerful_ 2206 | ary 2207 | Jane_ 2208 | 193 2209 | sti 2210 | ph 2211 | mel 2212 | list 2213 | interest 2214 | footage_ 2215 | comm 2216 | Tri 2217 | vers 2218 | spe 2219 | sna 2220 | sequences_ 2221 | present 2222 | casting_ 2223 | Star_ 2224 | M_ 2225 | ). 2226 | shoot 2227 | result_ 2228 | gre 2229 | fore 2230 | ete 2231 | break 2232 | soundtrack_ 2233 | sion_ 2234 | poor 2235 | lay 2236 | eas 2237 | black 2238 | temp 2239 | nda 2240 | king 2241 | compared_ 2242 | chu 2243 | break_ 2244 | Ben_ 2245 | ute 2246 | recent_ 2247 | pure_ 2248 | oi 2249 | lie_ 2250 | burn 2251 | uns 2252 | rip 2253 | ner_ 2254 | late 2255 | husband 2256 | former_ 2257 | dull_ 2258 | argu 2259 | Hollywood 2260 | nc 2261 | ming_ 2262 | lin 2263 | atmosphere_ 2264 | wood 2265 | why 2266 | amazing 2267 | ron 2268 | rat 2269 | gra 2270 | sed_ 2271 | period_ 2272 | game 2273 | Sto 2274 | win_ 2275 | ult 2276 | scar 2277 | pun 2278 | hei 2279 | ` 2280 | release_ 2281 | present_ 2282 | pin 2283 | ks_ 2284 | appreciate_ 2285 | 00 2286 | jump 2287 | bomb 2288 | HA 2289 | showed_ 2290 | nan 2291 | kills_ 2292 | decade 2293 | NO 2294 | Boy 2295 | ting 2296 | rating 2297 | editing_ 2298 | actress 2299 | Wal 2300 | Ea 2301 | ", " 2302 | weird_ 2303 | inside_ 2304 | hair 2305 | eli 2306 | disappointed_ 2307 | Wor 2308 | ski 2309 | ings_ 2310 | fast 2311 | drag 2312 | adapt 2313 | TO 2314 | NG_ 2315 | sequel_ 2316 | fle 2317 | Sand 2318 | RO 2319 | whatever_ 2320 | sleep 2321 | sca 2322 | ret 2323 | ney_ 2324 | creepy_ 2325 | cal_ 2326 | ") 2327 | sor 2328 | popular_ 2329 | nne 2330 | kick 2331 | ht 2332 | display 2333 | another 2334 | ves 2335 | please_ 2336 | moves_ 2337 | care 2338 | bet 2339 | bat 2340 | War_ 2341 | CO 2342 | program 2343 | predictable_ 2344 | positive_ 2345 | hing_ 2346 | copy_ 2347 | bia 2348 | anything 2349 | affect 2350 | thrill 2351 | rk 2352 | mark_ 2353 | ism_ 2354 | edit 2355 | Bri 2356 | rate 2357 | missing_ 2358 | ila 2359 | ial 2360 | guess 2361 | ft 2362 | entr 2363 | decide_ 2364 | 30 2365 | sun 2366 | filmmakers_ 2367 | box_ 2368 | ating_ 2369 | Cla 2370 | CA 2371 | 18 2372 | nie 2373 | material_ 2374 | married_ 2375 | hu 2376 | fin 2377 | blo 2378 | Wood 2379 | Tom 2380 | vi 2381 | oni 2382 | ena 2383 | BA 2384 | path 2385 | os_ 2386 | human 2387 | mag 2388 | ins 2389 | earlier_ 2390 | TI 2391 | LA 2392 | Far 2393 | portrayal_ 2394 | orc 2395 | lame_ 2396 | ks 2397 | form 2398 | call 2399 | acted_ 2400 | Christmas_ 2401 | violence 2402 | superb_ 2403 | idiot 2404 | follow 2405 | blow 2406 | SO 2407 | Les 2408 | Bill_ 2409 | 30_ 2410 | sorry_ 2411 | created_ 2412 | common_ 2413 | cheesy_ 2414 | Lea 2415 | Carl 2416 | !!! 2417 | question_ 2418 | pt 2419 | pick 2420 | med_ 2421 | leaving_ 2422 | box 2423 | Ci 2424 | Bla 2425 | AR 2426 | ".< 2427 | ze_ 2428 | makers_ 2429 | draw 2430 | ala 2431 | Day 2432 | B_ 2433 | succeed 2434 | pat 2435 | ones 2436 | gay_ 2437 | cy 2438 | barely_ 2439 | ara 2440 | air_ 2441 | San 2442 | Director_ 2443 | xt 2444 | screenplay_ 2445 | pan 2446 | miss_ 2447 | does 2448 | consider_ 2449 | com 2450 | ER 2451 | ub 2452 | ple 2453 | mystery_ 2454 | mine 2455 | involving_ 2456 | familiar_ 2457 | Mari 2458 | German_ 2459 | nat 2460 | eye_ 2461 | dly_ 2462 | disa 2463 | country 2464 | att 2465 | app 2466 | tho 2467 | press 2468 | mat 2469 | llo 2470 | fi_ 2471 | connect 2472 | called 2473 | ane 2474 | May 2475 | LE 2476 | K_ 2477 | Italian_ 2478 | Every_ 2479 | sure 2480 | ster_ 2481 | starring_ 2482 | horse 2483 | further_ 2484 | entertainment_ 2485 | ense 2486 | dog 2487 | disappointed 2488 | cher 2489 | af 2490 | won_ 2491 | secret 2492 | likes_ 2493 | indi 2494 | follows_ 2495 | ball_ 2496 | God_ 2497 | Cur 2498 | 196 2499 | wasted_ 2500 | ideas_ 2501 | cur 2502 | Bal 2503 | lly 2504 | ire 2505 | gu 2506 | general_ 2507 | believable_ 2508 | aus 2509 | Stu 2510 | Despite_ 2511 | understand 2512 | lit 2513 | last 2514 | cy_ 2515 | bought_ 2516 | ago_ 2517 | Very_ 2518 | Only_ 2519 | Han 2520 | wear 2521 | thu 2522 | themselves 2523 | recently_ 2524 | ms_ 2525 | intention 2526 | focus_ 2527 | ations_ 2528 | ali 2529 | yp 2530 | yet 2531 | ici 2532 | gy 2533 | exten 2534 | Min 2535 | Lin 2536 | Ed 2537 | Dar 2538 | tis 2539 | credits_ 2540 | Now 2541 | 50 2542 | sister_ 2543 | setting_ 2544 | odd_ 2545 | missed_ 2546 | mea 2547 | lot 2548 | ight_ 2549 | gg 2550 | fantasy_ 2551 | ash 2552 | US_ 2553 | Overall 2554 | young 2555 | suddenly_ 2556 | nge 2557 | members_ 2558 | dra 2559 | cover_ 2560 | artist 2561 | Watch_ 2562 | moment 2563 | background_ 2564 | ..... 2565 | seriously_ 2566 | mic 2567 | considered_ 2568 | Ric 2569 | Pres 2570 | ! < 2571 | (" 2572 | opinion_ 2573 | ise 2574 | gun 2575 | different 2576 | Sou 2577 | utterly_ 2578 | asse 2579 | alt 2580 | Though_ 2581 | LY_ 2582 | Big_ 2583 | situation_ 2584 | rio 2585 | il_ 2586 | ef 2587 | ding 2588 | Still 2589 | Cre 2590 | younger_ 2591 | special 2592 | raise 2593 | El 2594 | 90 2595 | walk_ 2596 | tone_ 2597 | tes_ 2598 | sitting_ 2599 | glad_ 2600 | base 2601 | Let 2602 | Boo 2603 | vent 2604 | lead 2605 | considering_ 2606 | animated_ 2607 | witness 2608 | torture 2609 | throw 2610 | sea 2611 | load 2612 | lim 2613 | hot 2614 | following_ 2615 | ess_ 2616 | center 2617 | Scott_ 2618 | NG 2619 | BO 2620 | 15_ 2621 | word 2622 | rid 2623 | pop 2624 | ions 2625 | ges 2626 | enter 2627 | Sal 2628 | Gre 2629 | ties_ 2630 | spl 2631 | hy 2632 | ery_ 2633 | disappointment 2634 | avoid_ 2635 | Jud 2636 | Ce 2637 | need 2638 | hel 2639 | hands_ 2640 | develop 2641 | cause_ 2642 | Steve_ 2643 | zombie_ 2644 | voice 2645 | successful_ 2646 | eo 2647 | Mary_ 2648 | EN 2649 | Because_ 2650 | stage 2651 | rv 2652 | master 2653 | crazy_ 2654 | Mer 2655 | rent 2656 | hes 2657 | OF_ 2658 | yl 2659 | tive_ 2660 | remake_ 2661 | passion 2662 | managed_ 2663 | fra 2664 | fans 2665 | drive 2666 | CH 2667 | Blo 2668 | Art 2669 | surprise_ 2670 | suggest 2671 | list_ 2672 | imme 2673 | crew_ 2674 | continu 2675 | Sci 2676 | solid_ 2677 | ora 2678 | eu 2679 | Men 2680 | Cal 2681 | sus 2682 | shar 2683 | omi 2684 | ita 2685 | istic_ 2686 | Pl 2687 | Jack 2688 | Davi 2689 | wonder 2690 | slasher_ 2691 | produced_ 2692 | frame 2693 | cle 2694 | Em 2695 | subs 2696 | state 2697 | seek 2698 | ona 2699 | mention 2700 | laughing_ 2701 | iti 2702 | hide 2703 | date 2704 | Some 2705 | touch 2706 | soft 2707 | shop 2708 | interview 2709 | dumb_ 2710 | clean 2711 | bored_ 2712 | bill 2713 | bed_ 2714 | beauty_ 2715 | basic_ 2716 | Cou 2717 | zi 2718 | ultimately_ 2719 | thinks_ 2720 | sto 2721 | odd 2722 | masterpiece 2723 | kind 2724 | cool 2725 | Ac 2726 | tto 2727 | sit 2728 | nci 2729 | ized_ 2730 | gore 2731 | dee 2732 | boo 2733 | Va 2734 | Come 2735 | ning 2736 | escape 2737 | eng 2738 | RA 2739 | America 2740 | worthy_ 2741 | unre 2742 | tche 2743 | shame_ 2744 | nothing 2745 | explo 2746 | Sl 2747 | Bus 2748 | BE 2749 | 13 2750 | pra 2751 | least 2752 | effect_ 2753 | deliver 2754 | boys_ 2755 | Wi 2756 | Stra 2757 | Fr 2758 | Cap 2759 | ** 2760 | ". 2761 | space_ 2762 | potential_ 2763 | oli 2764 | lon 2765 | ind 2766 | gor 2767 | gon 2768 | generally_ 2769 | ext 2770 | chees 2771 | beginning 2772 | Tony_ 2773 | wait 2774 | meaning 2775 | ley 2776 | fire_ 2777 | des_ 2778 | cop_ 2779 | ati 2780 | Ram 2781 | Ex 2782 | 195 2783 | were 2784 | survive 2785 | ral_ 2786 | push 2787 | mut 2788 | killer 2789 | dist 2790 | charm 2791 | ang 2792 | Frank 2793 | writing 2794 | worth 2795 | wor 2796 | stop 2797 | stick_ 2798 | ler_ 2799 | chemistry_ 2800 | cap 2801 | ae 2802 | Ya 2803 | second 2804 | ost 2805 | machine 2806 | lessly_ 2807 | individual 2808 | experience 2809 | ead 2810 | dancing_ 2811 | Sy 2812 | Del 2813 | Bor 2814 | !! 2815 | would 2816 | suspense_ 2817 | project 2818 | intelligent_ 2819 | cover 2820 | asi 2821 | Brit 2822 | speak_ 2823 | season_ 2824 | oth 2825 | ida 2826 | factor 2827 | amo 2828 | World_ 2829 | Once_ 2830 | Hard 2831 | ... 2832 | tol 2833 | live 2834 | changed_ 2835 | brain 2836 | uri 2837 | seriously 2838 | release 2839 | likely_ 2840 | gne 2841 | explain_ 2842 | ance 2843 | added_ 2844 | Here_ 2845 | AL 2846 | % 2847 | wre 2848 | spar 2849 | gree 2850 | eyes 2851 | detail 2852 | Night 2853 | Mag 2854 | term 2855 | tape 2856 | public_ 2857 | pleas 2858 | lives 2859 | ker 2860 | ile_ 2861 | had 2862 | dre 2863 | directing_ 2864 | dialog 2865 | convincing_ 2866 | chance 2867 | big 2868 | beat_ 2869 | appl 2870 | truth_ 2871 | spa 2872 | rica 2873 | monster_ 2874 | market 2875 | imm 2876 | have 2877 | fine 2878 | clue 2879 | card 2880 | blu 2881 | adult_ 2882 | Who 2883 | Jim_ 2884 | Bea 2885 | .) 2886 | value 2887 | twist_ 2888 | thrown_ 2889 | phe 2890 | model 2891 | entertainment 2892 | Where_ 2893 | LI 2894 | Ju 2895 | Black_ 2896 | ura 2897 | nic 2898 | han 2899 | failed_ 2900 | cinematic_ 2901 | bizarre_ 2902 | ben 2903 | Gu 2904 | rare_ 2905 | mbo 2906 | historical_ 2907 | everyone 2908 | epi 2909 | ate 2910 | ada 2911 | Cli 2912 | wind 2913 | sou 2914 | nder 2915 | mb 2916 | held_ 2917 | formula 2918 | flu 2919 | effect 2920 | clever_ 2921 | catch_ 2922 | W_ 2923 | pick_ 2924 | business_ 2925 | attempt 2926 | Show 2927 | Paul 2928 | segment 2929 | romance_ 2930 | ram 2931 | nom 2932 | how 2933 | ged_ 2934 | flow 2935 | equally_ 2936 | computer_ 2937 | commercial 2938 | Val 2939 | IMDb_ 2940 | trans 2941 | sent_ 2942 | pet 2943 | lk 2944 | ider 2945 | corn 2946 | channel 2947 | Ge 2948 | Christopher_ 2949 | ways 2950 | tat 2951 | subject 2952 | shooting_ 2953 | return_ 2954 | neither_ 2955 | neighbor 2956 | lady_ 2957 | impossible_ 2958 | Spa 2959 | BI 2960 | *** 2961 | - 2962 | yr 2963 | violent_ 2964 | syn 2965 | suffer 2966 | fur 2967 | cru 2968 | Charl 2969 | secret_ 2970 | rp 2971 | ros 2972 | pie 2973 | ious_ 2974 | hoping_ 2975 | ence_ 2976 | Ye 2977 | Son 2978 | trick 2979 | nia 2980 | effective_ 2981 | desp 2982 | costume 2983 | check 2984 | board_ 2985 | ami 2986 | aire 2987 | ado 2988 | Whi 2989 | Two_ 2990 | Rose 2991 | Green 2992 | surround 2993 | promise 2994 | mad 2995 | lesson 2996 | imagination 2997 | hum 2998 | excuse_ 2999 | escape_ 3000 | aspect_ 3001 | ak 3002 | Thu 3003 | Pal 3004 | Kr 3005 | Bur 3006 | vil 3007 | travel 3008 | reso 3009 | protagonist 3010 | object 3011 | nes 3012 | longer_ 3013 | lia 3014 | key 3015 | incredible_ 3016 | hoo 3017 | fool 3018 | expression 3019 | bot 3020 | bel 3021 | Ree 3022 | Oscar 3023 | Fu 3024 | safe 3025 | remains_ 3026 | note_ 3027 | natural_ 3028 | just 3029 | hm 3030 | grace 3031 | credit_ 3032 | constantly_ 3033 | Sam_ 3034 | Ren 3035 | OK_ 3036 | view 3037 | unlike_ 3038 | surprise 3039 | success_ 3040 | ssion 3041 | song 3042 | player 3043 | match_ 3044 | ela 3045 | din 3046 | critic 3047 | accident 3048 | 20 3049 | otherwise_ 3050 | material 3051 | knowing_ 3052 | ings 3053 | ffe 3054 | depth_ 3055 | cula 3056 | Whe 3057 | Ph 3058 | Ai 3059 | respect_ 3060 | puts_ 3061 | pher 3062 | kin 3063 | concept_ 3064 | zed_ 3065 | unfortunate 3066 | que_ 3067 | predictable 3068 | order 3069 | onto_ 3070 | meta 3071 | ev 3072 | dress 3073 | dog_ 3074 | cell 3075 | Thi 3076 | Frank_ 3077 | spin 3078 | rot 3079 | military_ 3080 | hall 3081 | cut 3082 | choice_ 3083 | chick 3084 | bs 3085 | Za 3086 | Many_ 3087 | witch 3088 | weak 3089 | swa 3090 | rti 3091 | producers_ 3092 | inn 3093 | gold 3094 | fault 3095 | ez 3096 | cute_ 3097 | cult_ 3098 | WO 3099 | SH 3100 | drink 3101 | , ( 3102 | wall 3103 | theme 3104 | taste 3105 | sion 3106 | iz 3107 | gun_ 3108 | ek 3109 | drawn_ 3110 | anyone 3111 | antic 3112 | tension_ 3113 | team 3114 | sweet_ 3115 | ree 3116 | perform 3117 | partner 3118 | horrible 3119 | contains_ 3120 | Es 3121 | De_ 3122 | Chris_ 3123 | AT 3124 | vote 3125 | tch_ 3126 | singing_ 3127 | shine 3128 | hasn 3129 | happen 3130 | gal 3131 | demon 3132 | dar 3133 | Jer 3134 | GE 3135 | ske 3136 | indeed_ 3137 | guys 3138 | emotion 3139 | apart_ 3140 | See 3141 | Roger 3142 | Pol 3143 | trouble_ 3144 | seat 3145 | planet 3146 | exciting_ 3147 | err 3148 | dream_ 3149 | cus 3150 | arrive 3151 | HO 3152 | !!!! 3153 | trip_ 3154 | today_ 3155 | sle 3156 | setting 3157 | rr 3158 | plus_ 3159 | og 3160 | faci 3161 | disp 3162 | crack 3163 | cen 3164 | Gun 3165 | words 3166 | will 3167 | prefer 3168 | pect 3169 | noi 3170 | leader 3171 | dit 3172 | deal 3173 | creep 3174 | Zo 3175 | Sid 3176 | East 3177 | record 3178 | poo 3179 | normal_ 3180 | message 3181 | ffi 3182 | fer 3183 | correct 3184 | colle 3185 | ator 3186 | Ros 3187 | Other_ 3188 | zen 3189 | usi 3190 | pil 3191 | mental_ 3192 | ji 3193 | immediately_ 3194 | ible_ 3195 | capt 3196 | bab 3197 | Chu 3198 | tar 3199 | stands_ 3200 | progress 3201 | making 3202 | lc 3203 | fic 3204 | exp 3205 | encounter 3206 | circ 3207 | change 3208 | annoying 3209 | Mur 3210 | Lor 3211 | Little_ 3212 | tl 3213 | rain 3214 | fail 3215 | died_ 3216 | Time 3217 | Blood 3218 | tell 3219 | reflect 3220 | ked_ 3221 | judge 3222 | ide 3223 | development_ 3224 | control_ 3225 | clima 3226 | bed 3227 | alr 3228 | Tre 3229 | trouble 3230 | thr 3231 | spot 3232 | ress 3233 | red 3234 | pol 3235 | hill 3236 | eb 3237 | TH 3238 | Ken 3239 | … 3240 | surprisingly_ 3241 | rep 3242 | freak 3243 | dep 3244 | college_ 3245 | brilliant 3246 | blin 3247 | bath 3248 | People_ 3249 | Nat 3250 | Charles_ 3251 | walking_ 3252 | ref 3253 | reco 3254 | pace_ 3255 | nde 3256 | mil 3257 | mainly_ 3258 | literally_ 3259 | fia 3260 | dull 3261 | Sn 3262 | Ever 3263 | Dam 3264 | Bre 3265 | Brad 3266 | Both_ 3267 | ward 3268 | trash 3269 | tough_ 3270 | serve 3271 | reasons_ 3272 | ngs 3273 | llen 3274 | ines 3275 | honest 3276 | focus 3277 | carrie 3278 | aim 3279 | Us 3280 | Prince 3281 | Nothing_ 3282 | truth 3283 | supp 3284 | sma 3285 | musical 3286 | inco 3287 | fight 3288 | enc 3289 | bother 3290 | arch 3291 | Jon 3292 | Japan 3293 | Er 3294 | Des 3295 | !!! 3296 | unw 3297 | unfortunately_ 3298 | til 3299 | rese 3300 | marri 3301 | ior 3302 | ene 3303 | ain_ 3304 | Aust 3305 | ular 3306 | tru 3307 | tch 3308 | tale 3309 | prop 3310 | phan 3311 | orat 3312 | nit 3313 | matter 3314 | host 3315 | hood 3316 | \&undsc 3317 | Not 3318 | Film_ 3319 | Ama 3320 | yle 3321 | var 3322 | standards 3323 | pers 3324 | nice 3325 | meaning_ 3326 | laughs_ 3327 | joke_ 3328 | iss 3329 | happi 3330 | era_ 3331 | WH 3332 | Lil 3333 | Girl 3334 | ES 3335 | />- 3336 | watche 3337 | tant 3338 | qua 3339 | presented_ 3340 | minor_ 3341 | gro 3342 | fie 3343 | door 3344 | corp 3345 | catch 3346 | cally_ 3347 | bert 3348 | Indian_ 3349 | Gen 3350 | questions_ 3351 | lacks_ 3352 | forever 3353 | establish 3354 | esc 3355 | cheap 3356 | Sol 3357 | while 3358 | twist 3359 | society_ 3360 | pass_ 3361 | overa 3362 | merely_ 3363 | highlight 3364 | flat_ 3365 | fill 3366 | color 3367 | cartoon_ 3368 | Will_ 3369 | NT 3370 | IT 3371 | Harry_ 3372 | Fan 3373 | youth 3374 | possible 3375 | orm 3376 | free 3377 | eight 3378 | destroy 3379 | creati 3380 | cing_ 3381 | ces_ 3382 | Carr 3383 | unl 3384 | suggest_ 3385 | slo 3386 | owner 3387 | kh 3388 | instead 3389 | influence 3390 | experiment 3391 | convey 3392 | appeal_ 3393 | Ol 3394 | Night_ 3395 | --- 3396 | vy 3397 | terms_ 3398 | sick_ 3399 | par 3400 | once 3401 | law 3402 | ize_ 3403 | infe 3404 | Spo 3405 | House_ 3406 | … 3407 | studio_ 3408 | simple 3409 | rre 3410 | guard 3411 | girlfriend_ 3412 | fear 3413 | dam 3414 | concern 3415 | amusing_ 3416 | adaptation_ 3417 | Ms 3418 | King 3419 | water 3420 | ory_ 3421 | officer 3422 | litera 3423 | knock 3424 | grat 3425 | falling_ 3426 | ered_ 3427 | cow 3428 | cond 3429 | alo 3430 | Kar 3431 | Der 3432 | Cri 3433 | text 3434 | skin 3435 | sequel 3436 | level 3437 | impression_ 3438 | ice_ 3439 | force_ 3440 | fake_ 3441 | deri 3442 | contain 3443 | band_ 3444 | appa 3445 | South_ 3446 | HE 3447 | Conn 3448 | wise_ 3449 | ur_ 3450 | ual 3451 | sy_ 3452 | luck 3453 | lack 3454 | impressi 3455 | disaster 3456 | business 3457 | being 3458 | beg 3459 | Burt 3460 | < 3461 | villain_ 3462 | type 3463 | shoot_ 3464 | shame 3465 | sb 3466 | pt_ 3467 | proves_ 3468 | manner 3469 | lame 3470 | impressive_ 3471 | ern 3472 | disappear 3473 | alone 3474 | LL 3475 | Having_ 3476 | Brook 3477 | Arm 3478 | !" 3479 | works 3480 | state_ 3481 | shock 3482 | rev 3483 | mus 3484 | int 3485 | ino 3486 | images_ 3487 | brid 3488 | berg 3489 | alis 3490 | Clo 3491 | singer 3492 | shr 3493 | rock_ 3494 | provides_ 3495 | page 3496 | instance 3497 | drug_ 3498 | crime 3499 | beautifully_ 3500 | acts_ 3501 | UN 3502 | Tal 3503 | Bruce_ 3504 | self_ 3505 | reality 3506 | mans 3507 | lived_ 3508 | innocent_ 3509 | ically_ 3510 | fall 3511 | dict 3512 | Henry_ 3513 | Fox 3514 | Bac 3515 | sold 3516 | says 3517 | period 3518 | ome 3519 | melodrama 3520 | include_ 3521 | evil 3522 | Ins 3523 | stati 3524 | silent_ 3525 | ria 3526 | mom 3527 | met_ 3528 | guns 3529 | ground 3530 | gate 3531 | fell_ 3532 | cle_ 3533 | cari 3534 | birth 3535 | Look 3536 | Hill 3537 | 1950 3538 | water_ 3539 | reminded_ 3540 | express 3541 | delight 3542 | als_ 3543 | Wes 3544 | Mis 3545 | Louis 3546 | Grant 3547 | xe 3548 | written 3549 | touch_ 3550 | ters_ 3551 | squa 3552 | moral 3553 | ffer 3554 | aut 3555 | appearance_ 3556 | Sim 3557 | Nor 3558 | Mont 3559 | IS_ 3560 | Cath 3561 | take 3562 | shel 3563 | protect 3564 | gut 3565 | ans 3566 | Too_ 3567 | Scar 3568 | Death 3569 | American 3570 | AND_ 3571 | throw_ 3572 | suck 3573 | standard_ 3574 | sil 3575 | should 3576 | share_ 3577 | scary 3578 | loves_ 3579 | indu 3580 | foot 3581 | ew_ 3582 | answer 3583 | Wit 3584 | Van_ 3585 | Terr 3586 | Str 3587 | subtle_ 3588 | stories 3589 | store_ 3590 | must 3591 | ments_ 3592 | mbi 3593 | gs 3594 | ft_ 3595 | fellow_ 3596 | erat 3597 | eni 3598 | crash 3599 | ches 3600 | becoming_ 3601 | appeared_ 3602 | TE 3603 | Fal 3604 | ., 3605 | visit 3606 | viewer 3607 | tag 3608 | surely_ 3609 | sur 3610 | stri 3611 | putting_ 3612 | pull_ 3613 | process 3614 | pointless_ 3615 | nta 3616 | mass 3617 | hur 3618 | hell 3619 | gue 3620 | girls 3621 | Rev 3622 | Pan 3623 | Billy_ 3624 | villain 3625 | suppose_ 3626 | sick 3627 | prom 3628 | narrat 3629 | mer_ 3630 | followed_ 3631 | decision 3632 | auto 3633 | adult 3634 | Movie_ 3635 | Ban 3636 | tone 3637 | thoroughly_ 3638 | sympath 3639 | sts_ 3640 | sk 3641 | pot 3642 | piece 3643 | offers_ 3644 | nte 3645 | most 3646 | helps_ 3647 | det 3648 | cti 3649 | brief_ 3650 | block 3651 | adds_ 3652 | Street 3653 | Red_ 3654 | Qui 3655 | Love 3656 | BL 3657 | support_ 3658 | ses_ 3659 | rta 3660 | recognize 3661 | mission 3662 | ignore 3663 | hon 3664 | broad 3665 | bid 3666 | ano 3667 | Swe 3668 | Shakespeare 3669 | Ron 3670 | Mart 3671 | Charlie_ 3672 | thanks_ 3673 | tage_ 3674 | serial_ 3675 | revenge_ 3676 | ors 3677 | office_ 3678 | nst 3679 | feature 3680 | drugs 3681 | disturb 3682 | anymore 3683 | Bl 3684 | , ' 3685 | univers 3686 | touching_ 3687 | strange 3688 | improve 3689 | iff 3690 | heavy_ 3691 | fare 3692 | central_ 3693 | buff 3694 | Inter 3695 | EA 3696 | worr 3697 | turning_ 3698 | tired_ 3699 | than 3700 | seemingly_ 3701 | motion_ 3702 | ku 3703 | has 3704 | goe 3705 | evi 3706 | duc 3707 | dem 3708 | cinematography 3709 | aspects_ 3710 | any 3711 | High 3712 | Cho 3713 | tick 3714 | surviv 3715 | suicide 3716 | return 3717 | remember 3718 | ppy_ 3719 | noti 3720 | mess_ 3721 | mes 3722 | inve 3723 | grow 3724 | enge 3725 | dom 3726 | Tar 3727 | Since_ 3728 | Roy 3729 | 19 3730 | ( 3731 | track_ 3732 | racis 3733 | narrative_ 3734 | nal 3735 | mysterious_ 3736 | moral_ 3737 | imp 3738 | desert 3739 | compl 3740 | along 3741 | Sw 3742 | Super 3743 | HI 3744 | Dor 3745 | America_ 3746 | vert 3747 | superb 3748 | stu 3749 | shouldn 3750 | science_ 3751 | rough 3752 | ray 3753 | ova 3754 | dumb 3755 | deb 3756 | court 3757 | control 3758 | complex_ 3759 | butt 3760 | Joe 3761 | Ir 3762 | Direct 3763 | throughout 3764 | tende 3765 | stic_ 3766 | somewhere_ 3767 | sel 3768 | pti 3769 | picked_ 3770 | parts 3771 | mob 3772 | fear_ 3773 | developed_ 3774 | couple 3775 | cas 3776 | attitude 3777 | apo 3778 | Sun 3779 | MO 3780 | L_ 3781 | Ei 3782 | teen_ 3783 | pull 3784 | ough 3785 | hunt 3786 | favor 3787 | dos 3788 | delivers_ 3789 | chill 3790 | ately 3791 | Van 3792 | vat 3793 | tz 3794 | trip 3795 | stuck_ 3796 | rela 3797 | mood_ 3798 | finish 3799 | essen 3800 | ering_ 3801 | disappoint 3802 | could 3803 | commit 3804 | TA 3805 | Lam 3806 | Harris 3807 | whole 3808 | value_ 3809 | ural 3810 | sim 3811 | season 3812 | redeeming_ 3813 | poli 3814 | please 3815 | happened 3816 | geo 3817 | force 3818 | ero 3819 | core_ 3820 | cand 3821 | blue 3822 | bell 3823 | assi 3824 | asp 3825 | adventure_ 3826 | Sin 3827 | McC 3828 | whatsoever 3829 | sky 3830 | shows 3831 | pse 3832 | language_ 3833 | insight 3834 | ier_ 3835 | finding_ 3836 | everything 3837 | cker 3838 | challenge 3839 | books_ 3840 | Out 3841 | Ji 3842 | Glo 3843 | tune 3844 | terri 3845 | prem 3846 | oe 3847 | nish 3848 | movement 3849 | ities_ 3850 | effort 3851 | absolute_ 3852 | Brian_ 3853 | Alan_ 3854 | unin 3855 | unde 3856 | ude 3857 | tear 3858 | oh_ 3859 | ize 3860 | ilia 3861 | hint 3862 | credib 3863 | craz 3864 | choice 3865 | charming_ 3866 | audiences_ 3867 | apart 3868 | York 3869 | Marc 3870 | wonderful 3871 | willing_ 3872 | wild 3873 | repeated 3874 | refer 3875 | ready_ 3876 | radi 3877 | punch 3878 | prison 3879 | painful_ 3880 | pain 3881 | paid_ 3882 | pace 3883 | nni 3884 | mate_ 3885 | hole 3886 | future 3887 | disturbing_ 3888 | cia 3889 | buck 3890 | ache 3891 | Taylor 3892 | Lind 3893 | Hol 3894 | vel 3895 | tor_ 3896 | terrific_ 3897 | suspense 3898 | sf 3899 | research 3900 | remark 3901 | problem 3902 | plu 3903 | pathetic_ 3904 | negative_ 3905 | lovely_ 3906 | lift 3907 | hype 3908 | gl 3909 | earn 3910 | ave 3911 | Their_ 3912 | SS 3913 | Cass 3914 | slowly_ 3915 | rented_ 3916 | opportunity_ 3917 | fat 3918 | every 3919 | este 3920 | dub 3921 | cons 3922 | bull 3923 | Sav 3924 | P_ 3925 | My 3926 | wondering_ 3927 | unbe 3928 | twe 3929 | statu 3930 | shin 3931 | rock 3932 | party_ 3933 | inform 3934 | heroine 3935 | hate 3936 | girlfriend 3937 | fate 3938 | ette 3939 | dies_ 3940 | comparison 3941 | alb 3942 | ak_ 3943 | Lis 3944 | Christian_ 3945 | Act 3946 | yon 3947 | storyline 3948 | soul 3949 | rece 3950 | rea 3951 | product 3952 | nut 3953 | lets_ 3954 | funniest_ 3955 | field_ 3956 | city 3957 | Stephen_ 3958 | GH 3959 | Ann 3960 | wee 3961 | weapon 3962 | viewing 3963 | tte 3964 | sty 3965 | spi 3966 | quality 3967 | price 3968 | possess 3969 | ntly 3970 | dd 3971 | compa 3972 | buy 3973 | agree 3974 | Hal 3975 | Comp 3976 | twists_ 3977 | shak 3978 | nudity_ 3979 | mati 3980 | giant_ 3981 | company_ 3982 | baby_ 3983 | admit 3984 | Finally 3985 | wn_ 3986 | whe 3987 | romance 3988 | presence_ 3989 | myself 3990 | jokes 3991 | ident 3992 | friendship 3993 | fift 3994 | explore 3995 | episodes 3996 | element_ 3997 | edi 3998 | eat 3999 | conve 4000 | Ira 4001 | However_ 4002 | DI 4003 | winning_ 4004 | sexy_ 4005 | rescue 4006 | physical_ 4007 | pe_ 4008 | oid 4009 | nobody_ 4010 | nis 4011 | mad_ 4012 | lin_ 4013 | ket 4014 | hom 4015 | generation 4016 | dance 4017 | attack 4018 | appropriate 4019 | allowed_ 4020 | Ve 4021 | RS 4022 | Mr_ 4023 | Kid 4024 | Instead_ 4025 | Hell 4026 | Everything_ 4027 | Before_ 4028 | Arthur_ 4029 | waste 4030 | themes_ 4031 | stunt 4032 | rap 4033 | million_ 4034 | hi_ 4035 | games 4036 | fair_ 4037 | distract 4038 | cross 4039 | boat 4040 | available_ 4041 | abilit 4042 | Hitler 4043 | Fl 4044 | Cas 4045 | wearing_ 4046 | spirit_ 4047 | rede 4048 | rb 4049 | perspective 4050 | ocr 4051 | mac 4052 | kle 4053 | gang_ 4054 | floor 4055 | fab 4056 | Pen 4057 | ON 4058 | Kur 4059 | Jerry_ 4060 | Here 4061 | Andrew 4062 | ?? 4063 | window 4064 | uss 4065 | mp_ 4066 | intens 4067 | expert 4068 | ei 4069 | changes_ 4070 | carry_ 4071 | born_ 4072 | bee 4073 | award 4074 | Sor 4075 | Jos 4076 | Home 4077 | Cat 4078 | 1980 4079 | zing_ 4080 | victim 4081 | tight 4082 | space 4083 | slu 4084 | pli 4085 | neat 4086 | mistake 4087 | ky 4088 | joke 4089 | includes_ 4090 | hear 4091 | emb 4092 | dev 4093 | damn_ 4094 | confusi 4095 | church 4096 | NI 4097 | Clark 4098 | theatre 4099 | sso 4100 | lock 4101 | laughed_ 4102 | fran 4103 | drive_ 4104 | danger 4105 | alle 4106 | Which_ 4107 | Western 4108 | Roman 4109 | Rit 4110 | Pie 4111 | Law 4112 | France 4113 | Did_ 4114 | 14 4115 | vor 4116 | usual 4117 | turn 4118 | supposedly_ 4119 | sm_ 4120 | satisf 4121 | realistic 4122 | pieces_ 4123 | nse 4124 | near 4125 | image_ 4126 | flat 4127 | development 4128 | design 4129 | contrast 4130 | colla 4131 | board 4132 | arti 4133 | anywhere 4134 | Unfortunately_ 4135 | Rock 4136 | Ford 4137 | Doc 4138 | white 4139 | small 4140 | replace 4141 | prison_ 4142 | owe 4143 | minat 4144 | may 4145 | inspired_ 4146 | helped_ 4147 | expect 4148 | doll 4149 | dish 4150 | chase 4151 | awa 4152 | Those_ 4153 | Second 4154 | OR 4155 | Nazi 4156 | Ell 4157 | watchable 4158 | via 4159 | test 4160 | stick 4161 | step_ 4162 | speech 4163 | relationship 4164 | pass 4165 | ote 4166 | nel 4167 | mild 4168 | gue_ 4169 | embarrass 4170 | describe_ 4171 | bound 4172 | bother_ 4173 | aging 4174 | Julie 4175 | 70s 4176 | via_ 4177 | street_ 4178 | squ 4179 | scream 4180 | pos 4181 | overs 4182 | mix_ 4183 | martial_ 4184 | magic_ 4185 | jud 4186 | gener 4187 | eh 4188 | concept 4189 | alien 4190 | FO 4191 | which 4192 | values_ 4193 | success 4194 | soldiers_ 4195 | pla 4196 | lous 4197 | lose_ 4198 | io 4199 | ike 4200 | fish 4201 | eth 4202 | ddy 4203 | crowd 4204 | creative_ 4205 | conc 4206 | beh 4207 | bbi 4208 | Matth 4209 | Europe 4210 | 1970 4211 | ulat 4212 | track 4213 | target 4214 | swea 4215 | stal 4216 | refuse 4217 | phon 4218 | pho 4219 | hang 4220 | gea 4221 | doubt 4222 | compr 4223 | cloth 4224 | cliché 4225 | bland 4226 | behavior 4227 | aci 4228 | Simp 4229 | Leon 4230 | England 4231 | Edi 4232 | Cons 4233 | )< 4234 | . 4235 | wy 4236 | worker 4237 | volu 4238 | vehicle 4239 | tour 4240 | random_ 4241 | phone_ 4242 | ong 4243 | moved_ 4244 | grave 4245 | folk 4246 | filming_ 4247 | feelings_ 4248 | build_ 4249 | basi 4250 | Tor 4251 | TR 4252 | Sk 4253 | New 4254 | Miss_ 4255 | Kl 4256 | Kat 4257 | Boll 4258 | zil 4259 | ust 4260 | robot 4261 | result 4262 | reac 4263 | ped 4264 | pea 4265 | ow_ 4266 | mmi 4267 | laughs 4268 | issues_ 4269 | intended_ 4270 | impressed_ 4271 | favorite 4272 | dw 4273 | documentary 4274 | doctor_ 4275 | debut 4276 | account 4277 | North 4278 | Im 4279 | GO 4280 | weird 4281 | transform 4282 | train 4283 | swi 4284 | sum 4285 | soci 4286 | same 4287 | reh 4288 | ld_ 4289 | ffic 4290 | conversation 4291 | comedic_ 4292 | artistic_ 4293 | adi 4294 | accept 4295 | Stone 4296 | Jew 4297 | CR 4298 | threaten 4299 | stea 4300 | scra 4301 | sake 4302 | potential 4303 | listen 4304 | het 4305 | cted_ 4306 | cod 4307 | chase_ 4308 | berg_ 4309 | appear 4310 | Ton 4311 | Queen 4312 | Mark_ 4313 | Hall 4314 | FI 4315 | wer 4316 | thes 4317 | sons 4318 | provide_ 4319 | nger 4320 | ney 4321 | mot 4322 | mask 4323 | flesh 4324 | exe 4325 | dozen 4326 | disgu 4327 | conclusion 4328 | accent 4329 | Victoria 4330 | SP 4331 | Jr 4332 | Char 4333 | Albert 4334 | try 4335 | tal_ 4336 | round_ 4337 | mix 4338 | ison 4339 | hundred 4340 | holds_ 4341 | gger 4342 | approach_ 4343 | Space 4344 | Okay 4345 | MI 4346 | Love_ 4347 | Elvi 4348 | Doo 4349 | tragic_ 4350 | sweet 4351 | stud 4352 | sible 4353 | remain 4354 | pur 4355 | nts_ 4356 | ken 4357 | got 4358 | fam 4359 | edge_ 4360 | Hea 4361 | Film 4362 | Cast 4363 | teenage_ 4364 | technical_ 4365 | skip 4366 | rend 4367 | our 4368 | illus 4369 | ham 4370 | favourite_ 4371 | ensi 4372 | consist 4373 | cold_ 4374 | cent 4375 | cate 4376 | MAN 4377 | F_ 4378 | Die 4379 | Cub 4380 | Chinese_ 4381 | yourself 4382 | ugh 4383 | stretch 4384 | society 4385 | rth 4386 | root 4387 | reminds_ 4388 | reg 4389 | rd_ 4390 | put 4391 | purpose 4392 | ition_ 4393 | humanity 4394 | gotten_ 4395 | fest 4396 | feel 4397 | fascinat 4398 | failure 4399 | culture_ 4400 | cont 4401 | allow_ 4402 | pursu 4403 | preci 4404 | if 4405 | belong 4406 | VE 4407 | Sar 4408 | O_ 4409 | Nic 4410 | Dead 4411 | AC 4412 | **** 4413 | western_ 4414 | uct 4415 | thro 4416 | tes 4417 | struggle_ 4418 | straight 4419 | stic 4420 | similar 4421 | repe 4422 | pid 4423 | nes_ 4424 | mou 4425 | irre 4426 | hic 4427 | explained 4428 | deeply_ 4429 | cs_ 4430 | confront 4431 | clichés 4432 | attack_ 4433 | asks_ 4434 | Yet_ 4435 | Was_ 4436 | Tro 4437 | Stre 4438 | Rei 4439 | Kelly_ 4440 | Julia 4441 | Bas 4442 | ? < 4443 | ties 4444 | technique 4445 | stunning_ 4446 | slight 4447 | skill 4448 | sat_ 4449 | outstanding_ 4450 | lies_ 4451 | journey_ 4452 | hap 4453 | expla 4454 | definit 4455 | critics_ 4456 | continue_ 4457 | compelling_ 4458 | charge 4459 | Thing 4460 | PE 4461 | Marie 4462 | Lynch 4463 | Jason_ 4464 | Hen 4465 | Av 4466 | .... 4467 | — 4468 | wanting_ 4469 | wanna 4470 | transp 4471 | thats_ 4472 | smok 4473 | respons 4474 | professional_ 4475 | print 4476 | physic 4477 | names_ 4478 | inge 4479 | infa 4480 | grip 4481 | green 4482 | ggi 4483 | buster 4484 | bum 4485 | belief 4486 | accept_ 4487 | abuse 4488 | Rain 4489 | Pos 4490 | Lee 4491 | Hoo 4492 | All 4493 | threa 4494 | soundtrack 4495 | realized_ 4496 | ration 4497 | purpose_ 4498 | notice_ 4499 | member_ 4500 | lovers 4501 | log 4502 | kni 4503 | inse 4504 | inde 4505 | impl 4506 | government_ 4507 | door_ 4508 | community 4509 | also 4510 | Zombie 4511 | WI 4512 | Sur 4513 | Stewart_ 4514 | Roo 4515 | NA 4516 | Comm 4517 | Anna 4518 | wonderfully_ 4519 | vac 4520 | tit 4521 | thus_ 4522 | shadow 4523 | rg 4524 | resol 4525 | religious_ 4526 | problems 4527 | nonsense 4528 | naked_ 4529 | marvel 4530 | fantastic 4531 | em_ 4532 | earth_ 4533 | demand 4534 | cost 4535 | bes 4536 | band 4537 | background 4538 | Mas 4539 | Bon 4540 | African 4541 | :< 4542 | thousand 4543 | realism 4544 | race_ 4545 | ption 4546 | pred 4547 | neg 4548 | met 4549 | little 4550 | kn 4551 | flying_ 4552 | ement 4553 | editing 4554 | abandon 4555 | Take 4556 | On 4557 | Mich 4558 | Gin 4559 | Fer 4560 | wide 4561 | victim_ 4562 | spell 4563 | search_ 4564 | rush 4565 | road_ 4566 | rank 4567 | pping_ 4568 | mpl 4569 | kil 4570 | incomp 4571 | humour_ 4572 | group 4573 | ghost 4574 | ens 4575 | electr 4576 | edg 4577 | dru 4578 | culture 4579 | cars 4580 | Wil 4581 | UR 4582 | Haw 4583 | Give 4584 | Fat 4585 | Dou 4586 | Ant 4587 | AD 4588 | vs 4589 | tia 4590 | rei 4591 | regret 4592 | necessar 4593 | master_ 4594 | mani 4595 | honestly_ 4596 | hey 4597 | hadn 4598 | gant 4599 | fresh_ 4600 | exce 4601 | document 4602 | direct_ 4603 | dated_ 4604 | afraid_ 4605 | OU 4606 | Mid 4607 | Len 4608 | Good 4609 | Beat 4610 | yer 4611 | walk 4612 | ture_ 4613 | train_ 4614 | theor 4615 | stink 4616 | spit 4617 | rarely_ 4618 | proper 4619 | intelligen 4620 | hed_ 4621 | hair_ 4622 | forgot 4623 | fascinating_ 4624 | ere 4625 | deliver_ 4626 | believable 4627 | awesome_ 4628 | attend 4629 | actresses_ 4630 | Up 4631 | Par 4632 | Bad_ 4633 | zombie 4634 | ys_ 4635 | wards 4636 | trash_ 4637 | strip 4638 | spectacular 4639 | six_ 4640 | silly 4641 | shed_ 4642 | praise 4643 | loud_ 4644 | inspir 4645 | insi 4646 | god 4647 | four 4648 | devi 4649 | Sir 4650 | Plan 4651 | PL 4652 | Everyone_ 4653 | Dol 4654 | thinking 4655 | store 4656 | spo 4657 | rou 4658 | pou 4659 | opposite 4660 | dud 4661 | difference_ 4662 | deli 4663 | compare_ 4664 | cable 4665 | VER 4666 | Tim_ 4667 | Ob 4668 | Jane 4669 | Jam 4670 | Don_ 4671 | CI 4672 | yo 4673 | want 4674 | villains 4675 | toward_ 4676 | taste_ 4677 | support 4678 | stone 4679 | sted_ 4680 | spect 4681 | satire 4682 | row_ 4683 | rag 4684 | observ 4685 | nel_ 4686 | motiv 4687 | moro 4688 | lust 4689 | lect 4690 | ively_ 4691 | gli 4692 | gie 4693 | fet 4694 | eld 4695 | div 4696 | creating_ 4697 | brain_ 4698 | bird 4699 | attention 4700 | ates_ 4701 | ald 4702 | Sher 4703 | Russ 4704 | Rea 4705 | Joan_ 4706 | Gab 4707 | Coo 4708 | Bond 4709 | 40 4710 | trade 4711 | sive_ 4712 | routine 4713 | plane_ 4714 | photograph 4715 | ound 4716 | om_ 4717 | nk_ 4718 | mountain 4719 | mate 4720 | listen_ 4721 | isa 4722 | imagina 4723 | gia 4724 | embarrassing 4725 | convince 4726 | building_ 4727 | avoid 4728 | Wow 4729 | SA 4730 | Al_ 4731 | vy_ 4732 | unsu 4733 | tty_ 4734 | situations_ 4735 | sensi 4736 | results 4737 | recogni 4738 | quick 4739 | plan_ 4740 | mod 4741 | masterpiece_ 4742 | limit 4743 | lar 4744 | gorgeous_ 4745 | fil 4746 | ensu 4747 | edly_ 4748 | cor 4749 | context 4750 | bul 4751 | bottom_ 4752 | began_ 4753 | animation 4754 | anc 4755 | acc 4756 | Ty 4757 | Sc 4758 | London_ 4759 | Lewis 4760 | ."< 4761 | weight 4762 | rubbish 4763 | rab 4764 | project_ 4765 | powers 4766 | personalit 4767 | offer_ 4768 | noir_ 4769 | killed 4770 | justif 4771 | jun 4772 | information_ 4773 | gem 4774 | ative_ 4775 | PO 4776 | Jeff_ 4777 | Gui 4778 | voca 4779 | tab 4780 | spot_ 4781 | remind 4782 | proceed 4783 | kick_ 4784 | ious 4785 | grab 4786 | enem 4787 | educat 4788 | claim 4789 | cks 4790 | charisma 4791 | bal 4792 | Scott 4793 | Over 4794 | Mus 4795 | Laure 4796 | Kan 4797 | Hunt 4798 | Dead_ 4799 | Acti 4800 | 90_ 4801 | 50_ 4802 | ! ! ! ! ! ! ! ! ! ! 4803 | ws_ 4804 | vul 4805 | village 4806 | speed 4807 | skills 4808 | public 4809 | outl 4810 | naive 4811 | mos 4812 | latter_ 4813 | ki_ 4814 | iat 4815 | honest_ 4816 | ga_ 4817 | emotions_ 4818 | detective_ 4819 | citi 4820 | bits_ 4821 | answer_ 4822 | accomplish 4823 | Washington 4824 | Sm 4825 | Dal 4826 | CE 4827 | Bett 4828 | Af 4829 | 40_ 4830 | sell 4831 | pret 4832 | pper 4833 | opera 4834 | notabl 4835 | involved 4836 | important 4837 | humorous 4838 | finale 4839 | dise 4840 | date_ 4841 | contribut 4842 | complain 4843 | comedies_ 4844 | battle 4845 | balance 4846 | Go_ 4847 | Fla 4848 | Alon 4849 | ); 4850 | wis 4851 | ups 4852 | spoke 4853 | pulled_ 4854 | points 4855 | mediocre_ 4856 | ker_ 4857 | introduced_ 4858 | independent_ 4859 | hil 4860 | fits_ 4861 | eating_ 4862 | confused_ 4863 | concerned 4864 | cing 4865 | ca_ 4866 | bran 4867 | borat 4868 | bing_ 4869 | ay_ 4870 | abr 4871 | Russian_ 4872 | Kevin_ 4873 | H_ 4874 | Fred_ 4875 | Exce 4876 | English 4877 | Danny_ 4878 | Dani 4879 | Coll 4880 | Alt 4881 | 100_ 4882 | used 4883 | translat 4884 | shape 4885 | odi 4886 | manage_ 4887 | loy 4888 | lik 4889 | ibi 4890 | eat_ 4891 | behav 4892 | apparent_ 4893 | admi 4894 | acr 4895 | ach 4896 | Young_ 4897 | Run 4898 | Martin_ 4899 | Mak 4900 | Hart 4901 | Asi 4902 | 25 4903 | & 4904 | trag 4905 | terror 4906 | tea 4907 | shallow 4908 | rob 4909 | rape 4910 | pond 4911 | ole 4912 | neck 4913 | nature 4914 | loving_ 4915 | jerk 4916 | hours 4917 | hidden_ 4918 | gar_ 4919 | field 4920 | fel 4921 | existence 4922 | erotic 4923 | constant_ 4924 | cau 4925 | bar_ 4926 | VI 4927 | Univers 4928 | Sen 4929 | CK 4930 | 100 4931 | wealth 4932 | wave 4933 | understanding_ 4934 | sole 4935 | ral 4936 | none 4937 | nasty_ 4938 | mari 4939 | likable_ 4940 | ith 4941 | intense_ 4942 | hou 4943 | gh_ 4944 | ely 4945 | dic 4946 | dea 4947 | clip 4948 | bow 4949 | UL 4950 | Nu 4951 | Moon 4952 | Ital 4953 | Ed_ 4954 | Cle 4955 | ....... 4956 | yeah 4957 | tree 4958 | successful 4959 | ril 4960 | ract 4961 | philosoph 4962 | parents 4963 | marriage_ 4964 | lte 4965 | ject 4966 | ite_ 4967 | hun 4968 | fantas 4969 | fame 4970 | extra_ 4971 | dreadful 4972 | details_ 4973 | dad_ 4974 | capture_ 4975 | annoy 4976 | Other 4977 | ?! 4978 | tions 4979 | stalk 4980 | speak 4981 | revolution 4982 | redu 4983 | pretend 4984 | politic 4985 | places_ 4986 | parody 4987 | park 4988 | onic 4989 | nowhere_ 4990 | mono 4991 | mile 4992 | manipulat 4993 | loses_ 4994 | lli 4995 | into 4996 | hid 4997 | ghost_ 4998 | gha 4999 | engage 5000 | assum 5001 | ador 5002 | admire 5003 | X_ 5004 | See_ 5005 | Full 5006 | Eye 5007 | zy 5008 | ware 5009 | ven_ 5010 | uncle 5011 | treated_ 5012 | television 5013 | surreal 5014 | student_ 5015 | rival 5016 | ride_ 5017 | recall 5018 | nudity 5019 | locations 5020 | ility 5021 | hamm 5022 | gags 5023 | fill_ 5024 | dealing_ 5025 | co_ 5026 | climax_ 5027 | bon 5028 | atmosphere 5029 | aged_ 5030 | Rock_ 5031 | Kim 5032 | Had 5033 | Brid 5034 | Anton 5035 | zombies_ 5036 | unfunny 5037 | techn 5038 | source 5039 | section 5040 | pris 5041 | priest 5042 | police 5043 | olo 5044 | nine 5045 | maker 5046 | limited_ 5047 | ik 5048 | genius_ 5049 | enjoyable 5050 | distan 5051 | desperate_ 5052 | believe 5053 | asked_ 5054 | appearance 5055 | Ring 5056 | Pete 5057 | Master 5058 | Kin 5059 | Harr 5060 | Earth 5061 | Dog 5062 | Brown 5063 | Bren 5064 | Add 5065 | web 5066 | tee 5067 | sucks 5068 | structure 5069 | regi 5070 | porn_ 5071 | osi 5072 | llian 5073 | lett 5074 | length_ 5075 | ior_ 5076 | hal 5077 | faith 5078 | enta 5079 | deserve_ 5080 | cartoon 5081 | bs_ 5082 | ahead_ 5083 | Got 5084 | Eu 5085 | Americans_ 5086 | Alex 5087 | speaking_ 5088 | smil 5089 | photographe 5090 | ope 5091 | mpe 5092 | minim 5093 | million 5094 | mental 5095 | magnificent 5096 | lur 5097 | lov 5098 | keeping_ 5099 | iting 5100 | homo 5101 | haunt 5102 | fiction_ 5103 | fee 5104 | exploit 5105 | entertain 5106 | dding 5107 | attracti 5108 | advice 5109 | Park 5110 | Fur 5111 | Cage 5112 | suc 5113 | songs 5114 | smart_ 5115 | shock_ 5116 | rif 5117 | repl 5118 | ranc 5119 | ran 5120 | photography_ 5121 | patient 5122 | ladies 5123 | hated_ 5124 | growing_ 5125 | cheer 5126 | attractive_ 5127 | ass_ 5128 | approach 5129 | ants_ 5130 | Mrs 5131 | Hay 5132 | Hank 5133 | Eli 5134 | EVER 5135 | Batman_ 5136 | week 5137 | sword 5138 | rac 5139 | promot 5140 | portray 5141 | pictures_ 5142 | lt_ 5143 | ito 5144 | interna 5145 | forgive 5146 | device 5147 | corrupt 5148 | choreograph 5149 | chop 5150 | blame_ 5151 | atch 5152 | VE_ 5153 | KE 5154 | Johnny_ 5155 | vity 5156 | ville 5157 | vas 5158 | uit 5159 | tional_ 5160 | quote 5161 | quick_ 5162 | producer_ 5163 | personally_ 5164 | parti 5165 | oa 5166 | nity 5167 | loo 5168 | ives 5169 | increas 5170 | ical 5171 | heads_ 5172 | graphic 5173 | going 5174 | featuring_ 5175 | defin 5176 | cute 5177 | criminal 5178 | cheat 5179 | cash 5180 | cann 5181 | bol 5182 | bec 5183 | Welles 5184 | SPOILERS 5185 | Power 5186 | Kell 5187 | Georg 5188 | Gene_ 5189 | Blai 5190 | Again 5191 | 11 5192 | yell 5193 | vious 5194 | unusual_ 5195 | tradition 5196 | summar 5197 | stunn 5198 | revealed 5199 | remo 5200 | psychi 5201 | provi 5202 | prepare 5203 | offer 5204 | insane 5205 | happens 5206 | efforts 5207 | delic 5208 | current_ 5209 | construct 5210 | bil 5211 | aries 5212 | animals_ 5213 | advance 5214 | Kong 5215 | Jan 5216 | Howard 5217 | Daw 5218 | Cru 5219 | ! 5220 | terribly_ 5221 | teache 5222 | tas 5223 | sudden 5224 | sleaz 5225 | sharp 5226 | ress_ 5227 | rape_ 5228 | ppi 5229 | numbers_ 5230 | mouth 5231 | lower 5232 | ime 5233 | ifie 5234 | ideal 5235 | exception_ 5236 | ema 5237 | charm_ 5238 | breaking_ 5239 | addition_ 5240 | Walke 5241 | Lat 5242 | Jean_ 5243 | Eddie_ 5244 | City_ 5245 | ." 5246 | warning 5247 | versions 5248 | tack 5249 | reli 5250 | ration_ 5251 | prove_ 5252 | plo 5253 | pile 5254 | performer 5255 | monk 5256 | intellectual 5257 | handle 5258 | ets 5259 | essor 5260 | ature 5261 | atri 5262 | ans_ 5263 | Int 5264 | Fel 5265 | European_ 5266 | Cus 5267 | As 5268 | wr 5269 | worst 5270 | witty 5271 | wild_ 5272 | wedding 5273 | students_ 5274 | sadly_ 5275 | princip 5276 | paint 5277 | mmy 5278 | mixed_ 5279 | kinda_ 5280 | frequent 5281 | discover_ 5282 | dal 5283 | command 5284 | colour 5285 | bou 5286 | bored 5287 | Wild 5288 | Ul 5289 | Really 5290 | Mitch 5291 | Cinema 5292 | Andy_ 5293 | 16 5294 | visuals 5295 | varie 5296 | ut_ 5297 | unfold 5298 | suspect 5299 | semi 5300 | responsible_ 5301 | religion 5302 | rapi 5303 | py_ 5304 | otic 5305 | numerous_ 5306 | news 5307 | nces 5308 | kl 5309 | junk 5310 | joy 5311 | insult 5312 | festival 5313 | drop_ 5314 | costumes_ 5315 | been 5316 | bag 5317 | aware_ 5318 | aver 5319 | Mir 5320 | Last_ 5321 | Hon 5322 | Frie 5323 | Cent 5324 | wishe 5325 | vie 5326 | toy 5327 | repeat 5328 | pter 5329 | oppo 5330 | open 5331 | noticed_ 5332 | murders_ 5333 | ka_ 5334 | harm 5335 | finish_ 5336 | extreme_ 5337 | eno 5338 | dying_ 5339 | doo 5340 | ddle 5341 | clear 5342 | cat_ 5343 | bru 5344 | addict 5345 | Smith 5346 | Rod 5347 | Rem 5348 | zzle 5349 | tory 5350 | starting_ 5351 | specific 5352 | screaming 5353 | scenery_ 5354 | psychological_ 5355 | occur 5356 | obli 5357 | mn 5358 | lica 5359 | laughter 5360 | inso 5361 | grad 5362 | goof 5363 | gas 5364 | element 5365 | dom_ 5366 | dism 5367 | deals_ 5368 | ctor 5369 | camp_ 5370 | audi 5371 | ator_ 5372 | ack 5373 | Smith_ 5374 | Sh 5375 | Kenne 5376 | Holl 5377 | Dean 5378 | xious 5379 | uncom 5380 | situation 5381 | shots 5382 | seem 5383 | rin 5384 | pain_ 5385 | originally_ 5386 | number 5387 | nightmare 5388 | mystery 5389 | ml 5390 | kiss 5391 | imag 5392 | iful 5393 | grew_ 5394 | grade_ 5395 | gge 5396 | event 5397 | eate 5398 | dramati 5399 | dad 5400 | condition 5401 | conce 5402 | comfort 5403 | chair 5404 | aur 5405 | YOU 5406 | Red 5407 | REAL 5408 | Norma 5409 | Kir 5410 | wash 5411 | upt 5412 | titi 5413 | returns_ 5414 | retr 5415 | restr 5416 | require 5417 | relief 5418 | realise 5419 | rch 5420 | rang 5421 | ple_ 5422 | lus 5423 | lip 5424 | intrigue 5425 | incident 5426 | iler 5427 | ha_ 5428 | ground_ 5429 | fores 5430 | exh 5431 | dancer 5432 | anger 5433 | Wr 5434 | They 5435 | Sinatra 5436 | SI 5437 | Op 5438 | Long 5439 | GI 5440 | Dem 5441 | yd 5442 | week_ 5443 | treatment 5444 | treat 5445 | stan 5446 | slic 5447 | separate 5448 | screenplay 5449 | remarkable_ 5450 | pped_ 5451 | persona 5452 | mble 5453 | invi 5454 | innocen 5455 | hack 5456 | gru 5457 | gma 5458 | glass 5459 | forgotten_ 5460 | fem 5461 | confi 5462 | clever 5463 | bone 5464 | amateur 5465 | Richard 5466 | Ray_ 5467 | Please_ 5468 | Kris 5469 | IM 5470 | Gordon 5471 | ED 5472 | Black 5473 | wen 5474 | very 5475 | ured 5476 | theater 5477 | stab 5478 | redi 5479 | perce 5480 | peace 5481 | passe 5482 | ops 5483 | oon 5484 | morning 5485 | llow 5486 | legend 5487 | irritating 5488 | hopes_ 5489 | gross 5490 | genuinely_ 5491 | ech 5492 | crus 5493 | bitter 5494 | acti 5495 | accura 5496 | Yu 5497 | Rome 5498 | Parker 5499 | Dia 5500 | studio 5501 | still 5502 | stereotypes 5503 | serv 5504 | sequences 5505 | sequence 5506 | pres 5507 | portray_ 5508 | poet 5509 | opti 5510 | only 5511 | ins_ 5512 | impact_ 5513 | emotion_ 5514 | ek_ 5515 | earth 5516 | dou 5517 | dislike 5518 | Sti 5519 | Reg 5520 | Philip 5521 | Bil 5522 | Att 5523 | Ash 5524 | Adam_ 5525 | viol 5526 | v_ 5527 | uma 5528 | ultimate_ 5529 | ught 5530 | trailer_ 5531 | superior_ 5532 | sucked 5533 | sno 5534 | service 5535 | ride 5536 | por 5537 | plan 5538 | mum 5539 | mme 5540 | merc 5541 | lonel 5542 | guide 5543 | fici 5544 | facts 5545 | evidence 5546 | doctor 5547 | discover 5548 | depend 5549 | degree 5550 | cruel 5551 | counter 5552 | color_ 5553 | cess 5554 | cause 5555 | bro 5556 | ambitio 5557 | amaze 5558 | alternat 5559 | Wom 5560 | White_ 5561 | John 5562 | Bud 5563 | wound 5564 | wander 5565 | typi 5566 | technology 5567 | swe 5568 | standing_ 5569 | reuni 5570 | organi 5571 | ngly_ 5572 | minu 5573 | leas 5574 | gift 5575 | executed 5576 | environment 5577 | diss 5578 | demonstrat 5579 | compani 5580 | allows_ 5581 | Wayne 5582 | Kno 5583 | Instead 5584 | DA 5585 | Cart 5586 | Anthony_ 5587 | unable_ 5588 | uf 5589 | twin 5590 | tely 5591 | sympathetic 5592 | spoof 5593 | sis 5594 | saying 5595 | rh 5596 | repr 5597 | rave 5598 | promising 5599 | nch_ 5600 | moo 5601 | ming 5602 | liz 5603 | lighting_ 5604 | lesbian 5605 | large 5606 | izing_ 5607 | impos 5608 | dor 5609 | disco 5610 | corny 5611 | arts_ 5612 | Wars 5613 | Trac 5614 | Seve 5615 | Poli 5616 | PA 5617 | Moore 5618 | LL_ 5619 | Jimmy_ 5620 | Gary_ 5621 | ?" 5622 | zero 5623 | underw 5624 | tou 5625 | spen 5626 | sheer_ 5627 | scared_ 5628 | rever 5629 | relationships_ 5630 | proved_ 5631 | predict 5632 | pia 5633 | obsc 5634 | lum 5635 | learn 5636 | herself 5637 | gras 5638 | finished_ 5639 | continues_ 5640 | brave 5641 | aris 5642 | api 5643 | THIS_ 5644 | Mille 5645 | Leg 5646 | First 5647 | Dis 5648 | Allen_ 5649 | traditional_ 5650 | statement 5651 | spir 5652 | soon 5653 | rence 5654 | ran_ 5655 | pros 5656 | opi 5657 | mistake_ 5658 | lawyer 5659 | discovers_ 5660 | deepe 5661 | ction_ 5662 | cares 5663 | brutal_ 5664 | brutal 5665 | breaks_ 5666 | antly 5667 | accent_ 5668 | Killer 5669 | Can_ 5670 | Broadway 5671 | unintentional 5672 | unbelievable_ 5673 | tte_ 5674 | suspect_ 5675 | strike 5676 | sens 5677 | screw 5678 | rtu 5679 | pant 5680 | opens_ 5681 | obsessi 5682 | mates 5683 | los 5684 | logic 5685 | kit 5686 | joy_ 5687 | inte 5688 | iness_ 5689 | han_ 5690 | exact 5691 | entertained 5692 | ego 5693 | dreams_ 5694 | convention 5695 | collecti 5696 | chest 5697 | bling_ 5698 | authentic 5699 | Then 5700 | Much_ 5701 | Mot 5702 | Bette 5703 | viewers 5704 | vampire_ 5705 | teach 5706 | stylis 5707 | someone 5708 | sne 5709 | saved_ 5710 | rule 5711 | regular_ 5712 | practic 5713 | ppe 5714 | pion 5715 | notice 5716 | native 5717 | monsters 5718 | lo_ 5719 | learned_ 5720 | incon 5721 | hour 5722 | hood_ 5723 | feeling 5724 | embe 5725 | driving_ 5726 | convincing 5727 | cav 5728 | ber_ 5729 | angle 5730 | absurd 5731 | Trek 5732 | Sat 5733 | Paris_ 5734 | Mol 5735 | Max 5736 | Kh 5737 | Emma 5738 | Edward 5739 | Anyone_ 5740 | ?? 5741 | 17 5742 | " 5743 | wrap 5744 | unrealistic 5745 | tam 5746 | subtitle 5747 | spoilers 5748 | since 5749 | sexual 5750 | render 5751 | remake 5752 | rely 5753 | pop_ 5754 | oge 5755 | oft 5756 | nett 5757 | monst 5758 | law_ 5759 | ional 5760 | inclu 5761 | ich 5762 | ians_ 5763 | hotel_ 5764 | graphic_ 5765 | gonna_ 5766 | gent 5767 | flashbacks 5768 | families 5769 | erin 5770 | dropp 5771 | dir 5772 | bond 5773 | affair_ 5774 | Scre 5775 | Dun 5776 | wide_ 5777 | ttl 5778 | topic 5779 | symboli 5780 | switch 5781 | solve 5782 | send 5783 | rud 5784 | rem 5785 | reasons 5786 | reasonabl 5787 | pee 5788 | nar 5789 | location_ 5790 | ining_ 5791 | gam 5792 | disappointing_ 5793 | desire_ 5794 | criminal_ 5795 | considera 5796 | century_ 5797 | celebrat 5798 | brow 5799 | area 5800 | Thin 5801 | Rec 5802 | ' ( 5803 | ward_ 5804 | vision_ 5805 | treme 5806 | surprising_ 5807 | super_ 5808 | risk 5809 | receive 5810 | qual 5811 | pic 5812 | mee 5813 | levels 5814 | kins 5815 | jack 5816 | ire_ 5817 | introduc 5818 | hits_ 5819 | happening_ 5820 | handsome 5821 | gradua 5822 | giv 5823 | garbage 5824 | forces_ 5825 | finest_ 5826 | easi 5827 | depressing 5828 | credits 5829 | asto 5830 | Sadly 5831 | Ple 5832 | Inc 5833 | Dick_ 5834 | Alexand 5835 | wooden_ 5836 | wood_ 5837 | stro 5838 | steal_ 5839 | soul_ 5840 | reference 5841 | race 5842 | quis 5843 | pir 5844 | perv 5845 | obvious 5846 | majority_ 5847 | lean 5848 | kes_ 5849 | insti 5850 | identity 5851 | everybody_ 5852 | double_ 5853 | dies 5854 | credit 5855 | const 5856 | confe 5857 | compar 5858 | centur 5859 | bloody_ 5860 | Under 5861 | Twi 5862 | Sean_ 5863 | Lio 5864 | Halloween 5865 | Gal 5866 | Clu 5867 | Came 5868 | Barbara_ 5869 | ?) 5870 | 11_ 5871 | ws 5872 | ulous 5873 | subtle 5874 | substance 5875 | string 5876 | shocking_ 5877 | scientist_ 5878 | rian 5879 | nou 5880 | multi 5881 | lf 5882 | inal 5883 | harsh 5884 | handed 5885 | fir 5886 | expectations_ 5887 | excited 5888 | exceptional 5889 | eva 5890 | complete 5891 | comic 5892 | childhood_ 5893 | ched_ 5894 | adults_ 5895 | Timo 5896 | Soo 5897 | Mos 5898 | Kath 5899 | Karl 5900 | Cinderella 5901 | Christian 5902 | Age 5903 | Adam 5904 | !). 5905 | zar 5906 | zan 5907 | trap 5908 | trai 5909 | thin_ 5910 | site_ 5911 | site 5912 | rich 5913 | resi 5914 | reach_ 5915 | quirk 5916 | patr 5917 | ony 5918 | nerv 5919 | matche 5920 | inept 5921 | imagine 5922 | horri 5923 | front 5924 | ford_ 5925 | epic_ 5926 | dat 5927 | cynic 5928 | ckin 5929 | cie 5930 | caused_ 5931 | brothers_ 5932 | belo 5933 | appealing 5934 | West_ 5935 | UK 5936 | TC 5937 | Suc 5938 | Rand 5939 | Grad 5940 | Domin 5941 | Disney 5942 | 12_ 5943 | warr 5944 | vision 5945 | spoo 5946 | seeing 5947 | scenario 5948 | scale 5949 | rad 5950 | ola 5951 | next 5952 | necessary_ 5953 | indicat 5954 | exploitation 5955 | ened_ 5956 | directing 5957 | depict 5958 | curio 5959 | ciati 5960 | bullet 5961 | appre 5962 | amateurish 5963 | Yo 5964 | Watching_ 5965 | Sky 5966 | Shar 5967 | Part_ 5968 | Nichol 5969 | Mars 5970 | Are_ 5971 | wel 5972 | visit_ 5973 | unne 5974 | underrated 5975 | tedious 5976 | seconds_ 5977 | rig 5978 | report 5979 | reme 5980 | rar 5981 | mond_ 5982 | media_ 5983 | lying_ 5984 | las 5985 | language 5986 | ised_ 5987 | instant 5988 | inspiration 5989 | creates_ 5990 | conflict 5991 | compose 5992 | chan 5993 | cab 5994 | ava 5995 | always 5996 | Water 5997 | Steven_ 5998 | Pas 5999 | Nick_ 6000 | Let_ 6001 | Down 6002 | yth 6003 | victims_ 6004 | theaters 6005 | seasons 6006 | sai 6007 | rising 6008 | recr 6009 | plann 6010 | pent 6011 | painfully_ 6012 | ot_ 6013 | occu 6014 | nob 6015 | moti 6016 | lem 6017 | lati 6018 | gua 6019 | fights_ 6020 | event_ 6021 | elev 6022 | discovered_ 6023 | cs 6024 | cliché_ 6025 | cance 6026 | bik 6027 | bigger_ 6028 | backs 6029 | atic 6030 | Shan 6031 | Sab 6032 | Poi 6033 | Hitchcock 6034 | GR 6035 | Francis 6036 | Det 6037 | Care 6038 | Anderson 6039 | veteran 6040 | ution_ 6041 | theless 6042 | sports 6043 | slave 6044 | ses 6045 | revi 6046 | refreshing 6047 | quar 6048 | provok 6049 | premise 6050 | paper 6051 | nty 6052 | norm 6053 | mood 6054 | menac 6055 | loud 6056 | loose 6057 | letter 6058 | investigati 6059 | introduce 6060 | holes_ 6061 | gan_ 6062 | fund 6063 | ents_ 6064 | drunk 6065 | disgusting 6066 | dio 6067 | confusing_ 6068 | cky 6069 | baby 6070 | THE 6071 | Nancy 6072 | Kate_ 6073 | Gia 6074 | Carol 6075 | Cand 6076 | '. 6077 | western 6078 | unf 6079 | struc 6080 | strong 6081 | search 6082 | sav 6083 | ries_ 6084 | resemble 6085 | rental 6086 | raci 6087 | producer 6088 | nic_ 6089 | news_ 6090 | memor 6091 | many 6092 | magical 6093 | format 6094 | equal 6095 | decl 6096 | curs 6097 | ction 6098 | convict 6099 | contrived 6100 | capable_ 6101 | bringing_ 6102 | boyfriend_ 6103 | bli 6104 | anybody_ 6105 | animal_ 6106 | advertis 6107 | Music 6108 | Jun 6109 | Jones 6110 | Greg 6111 | Fra 6112 | Donald_ 6113 | Dark 6114 | 1930 6115 | é_ 6116 | yc 6117 | urne 6118 | tire 6119 | step 6120 | scr 6121 | reporter 6122 | position 6123 | okay 6124 | nted_ 6125 | misse 6126 | logical 6127 | ient 6128 | identif 6129 | feet 6130 | fail_ 6131 | creat 6132 | content_ 6133 | contemp 6134 | concei 6135 | border 6136 | ask 6137 | actual 6138 | Way 6139 | Plus 6140 | Mill 6141 | Foo 6142 | Dy 6143 | Bec 6144 | , 6145 | utter_ 6146 | urban 6147 | struggle 6148 | sign_ 6149 | sher 6150 | seduc 6151 | scientist 6152 | saw 6153 | released 6154 | received_ 6155 | lity_ 6156 | jump_ 6157 | island_ 6158 | ignor 6159 | ick 6160 | horrifi 6161 | hange 6162 | handled 6163 | endea 6164 | dil 6165 | ative 6166 | angry_ 6167 | ages_ 6168 | accus 6169 | Writ 6170 | Without_ 6171 | Wall 6172 | Thank 6173 | Sla 6174 | Qua 6175 | Page 6176 | ND 6177 | Lost 6178 | Fish 6179 | Eric_ 6180 | Does 6181 | Clau 6182 | Cel 6183 | Camp 6184 | Australian 6185 | Arn 6186 | Ann_ 6187 | Ala 6188 | Actually 6189 | .' 6190 | ,' 6191 | wall_ 6192 | thoughts 6193 | somebody_ 6194 | round 6195 | proud 6196 | oy 6197 | overly_ 6198 | opera_ 6199 | offensive 6200 | myth 6201 | murderer 6202 | mpt 6203 | ivi 6204 | ir_ 6205 | iga 6206 | iar 6207 | holi 6208 | hearted_ 6209 | gath 6210 | fictional 6211 | expectation 6212 | etta 6213 | enco 6214 | ence 6215 | deserved_ 6216 | depiction 6217 | dece 6218 | comedian 6219 | bles 6220 | aside_ 6221 | ambi 6222 | ake 6223 | Wonder 6224 | Why 6225 | Through 6226 | Overall_ 6227 | Off 6228 | OI 6229 | More_ 6230 | Jennifer_ 6231 | Gill 6232 | Germany 6233 | Douglas_ 6234 | Cy 6235 | CGI_ 6236 | "). 6237 | walks_ 6238 | ury 6239 | three 6240 | thank_ 6241 | surp 6242 | soph 6243 | sed 6244 | satisfying 6245 | rebel 6246 | pure 6247 | practically_ 6248 | minds 6249 | manage 6250 | lp 6251 | learns_ 6252 | isl 6253 | involves_ 6254 | impro 6255 | impa 6256 | icon 6257 | hyp 6258 | fortune 6259 | erm 6260 | cuts_ 6261 | copi 6262 | conclusion_ 6263 | ced_ 6264 | captured_ 6265 | bble 6266 | arro 6267 | Wei 6268 | Sis 6269 | Pin 6270 | Marg 6271 | Life 6272 | Laur 6273 | Later 6274 | Hop 6275 | Eva 6276 | Blue 6277 | Barry 6278 | Baby 6279 | whilst_ 6280 | unfa 6281 | twi 6282 | test_ 6283 | ters 6284 | stric 6285 | streets 6286 | stom 6287 | spoil 6288 | relative 6289 | relate_ 6290 | recommend 6291 | ology 6292 | middle 6293 | laughable 6294 | jea 6295 | genuine_ 6296 | gat 6297 | frustrati 6298 | forth 6299 | excitement 6300 | costs 6301 | cord 6302 | compo 6303 | bright_ 6304 | bank 6305 | aka 6306 | WE 6307 | Ten 6308 | THAT 6309 | Pur 6310 | Pitt 6311 | Mike_ 6312 | Hum 6313 | Being_ 6314 | veri 6315 | turi 6316 | tun 6317 | tel 6318 | task 6319 | sting 6320 | six 6321 | sentimental 6322 | quit 6323 | pleasure_ 6324 | pity 6325 | personality_ 6326 | motivation 6327 | moder 6328 | miserabl 6329 | mirror 6330 | manner_ 6331 | logi 6332 | ein 6333 | eful 6334 | dubbed 6335 | discussi 6336 | ders 6337 | defeat 6338 | dangerous_ 6339 | cry_ 6340 | clos 6341 | cial_ 6342 | chor 6343 | Wat 6344 | Wan 6345 | Spanish_ 6346 | Have 6347 | Guy 6348 | Game 6349 | . . 6350 | winner 6351 | welcome 6352 | unexp 6353 | ture 6354 | tall 6355 | tal 6356 | stoo 6357 | smo 6358 | serious 6359 | rc 6360 | phi 6361 | outrage 6362 | oh 6363 | national_ 6364 | mber_ 6365 | mba 6366 | loser 6367 | lee 6368 | largely_ 6369 | involve 6370 | ico 6371 | garbage_ 6372 | found 6373 | even 6374 | distinct 6375 | design_ 6376 | cure 6377 | consu 6378 | circumstances 6379 | calls_ 6380 | blown_ 6381 | attract 6382 | anime 6383 | Zi 6384 | Vietnam 6385 | Ryan 6386 | ON_ 6387 | NY 6388 | Lady_ 6389 | La_ 6390 | Flor 6391 | Bern 6392 | AI 6393 | ) 6394 | unk 6395 | unh 6396 | ugly_ 6397 | tine 6398 | spre 6399 | simpli 6400 | significant 6401 | sequels 6402 | remembered_ 6403 | reache 6404 | plat 6405 | obsessed_ 6406 | ncy_ 6407 | mysteri 6408 | mous 6409 | mbs 6410 | lover_ 6411 | lights 6412 | lad 6413 | industr 6414 | ible 6415 | grown_ 6416 | general 6417 | fru 6418 | explosion 6419 | exception 6420 | ese 6421 | endur 6422 | domina 6423 | dera 6424 | cies 6425 | built_ 6426 | barr 6427 | Tod 6428 | Ran 6429 | Maria 6430 | Grand 6431 | Dee 6432 | Aw 6433 | />** 6434 | xo 6435 | voices 6436 | visually 6437 | ui 6438 | twice_ 6439 | tend_ 6440 | spor 6441 | solut 6442 | slap 6443 | scien 6444 | robbe 6445 | redibl 6446 | prot 6447 | prevent 6448 | ood 6449 | kee 6450 | issue_ 6451 | ironic 6452 | iron 6453 | investigat 6454 | intr 6455 | hl 6456 | gus 6457 | food_ 6458 | enl 6459 | dl 6460 | described_ 6461 | complaint 6462 | careful 6463 | apartment_ 6464 | alcohol 6465 | aid 6466 | acy 6467 | Year 6468 | Vis 6469 | Vir 6470 | Tow 6471 | Fly 6472 | Dream 6473 | Award 6474 | ***** 6475 | vague 6476 | strat 6477 | reviewers_ 6478 | offend 6479 | locat 6480 | iu 6481 | ital 6482 | iev 6483 | hospital_ 6484 | fou 6485 | financ 6486 | filmmaker_ 6487 | farm 6488 | evening 6489 | essentially_ 6490 | energy_ 6491 | ef_ 6492 | complex 6493 | competi 6494 | ching 6495 | bal_ 6496 | ax 6497 | ances 6498 | acted 6499 | ace_ 6500 | Story 6501 | LD 6502 | Inde 6503 | Hope 6504 | Duk 6505 | Dian 6506 | Bob 6507 | Back 6508 | Any_ 6509 | About_ 6510 | ... 6511 | yard 6512 | whenever_ 6513 | wake 6514 | ures_ 6515 | unse 6516 | trust_ 6517 | treat_ 6518 | teenager 6519 | stock_ 6520 | rri 6521 | rise_ 6522 | rant 6523 | pupp 6524 | pte 6525 | pes 6526 | overd 6527 | operati 6528 | occasional 6529 | nicely_ 6530 | nical 6531 | liners 6532 | impo 6533 | holding_ 6534 | engaging_ 6535 | diver 6536 | distribut 6537 | dim 6538 | delightful_ 6539 | crappy_ 6540 | cook 6541 | connection_ 6542 | cohe 6543 | bore 6544 | Vincen 6545 | Susan 6546 | Rep 6547 | Powell 6548 | Oliver 6549 | Neil 6550 | Murphy 6551 | Mic 6552 | Indi 6553 | Ele 6554 | Bru 6555 | Beaut 6556 | . * 6557 | />* 6558 | zation 6559 | urge 6560 | urag 6561 | teenagers 6562 | seven_ 6563 | river 6564 | prep 6565 | nail 6566 | mble_ 6567 | matters 6568 | loose_ 6569 | iva 6570 | issue 6571 | intriguing_ 6572 | ili 6573 | god_ 6574 | glimpse 6575 | ently 6576 | els_ 6577 | een_ 6578 | develop_ 6579 | desire 6580 | cops_ 6581 | contra 6582 | buil 6583 | broke 6584 | ater 6585 | asleep 6586 | adventur 6587 | Williams_ 6588 | Wend 6589 | None_ 6590 | Mod 6591 | House 6592 | Horror_ 6593 | Anim 6594 | 192 6595 | ughter 6596 | trial 6597 | soap_ 6598 | severe 6599 | road 6600 | poster 6601 | portraying_ 6602 | phr 6603 | pathetic 6604 | overlook 6605 | moving 6606 | month 6607 | lau 6608 | lacking_ 6609 | knowledge_ 6610 | kidnapp 6611 | interpretation 6612 | industry_ 6613 | hurt 6614 | heavi 6615 | genius 6616 | false 6617 | existent 6618 | execution 6619 | drop 6620 | difference 6621 | determine 6622 | detail_ 6623 | dent 6624 | cutting 6625 | combin 6626 | comb 6627 | cket 6628 | chron 6629 | capital 6630 | bodies 6631 | bic 6632 | believes_ 6633 | area_ 6634 | angles 6635 | Ted 6636 | Sop 6637 | End 6638 | Dre 6639 | Dick 6640 | Ak 6641 | Africa 6642 | ? 6643 | vol 6644 | system 6645 | steps 6646 | situations 6647 | sexuality 6648 | sets 6649 | ripp 6650 | revel 6651 | rel 6652 | realiz 6653 | private 6654 | paper_ 6655 | notch 6656 | nge_ 6657 | mistr 6658 | merit 6659 | mbl 6660 | match 6661 | losing_ 6662 | lme 6663 | interacti 6664 | indeed 6665 | ifica 6666 | henc 6667 | heaven 6668 | fro 6669 | fon 6670 | femin 6671 | faces_ 6672 | enh 6673 | driven_ 6674 | dressed_ 6675 | dne 6676 | decen 6677 | ctic 6678 | coming 6679 | club_ 6680 | castle 6681 | captures_ 6682 | building 6683 | atic_ 6684 | athe 6685 | assassin 6686 | army_ 6687 | alien_ 6688 | abso 6689 | Tho 6690 | Scr 6691 | Prob 6692 | Para 6693 | Gor 6694 | Eg 6695 | Com 6696 | City 6697 | At 6698 | Apparently 6699 | / 6700 | ule 6701 | ue_ 6702 | tograph 6703 | thirt 6704 | thank 6705 | suit_ 6706 | suffering_ 6707 | sight_ 6708 | sey 6709 | screenwriter 6710 | rell 6711 | ppet 6712 | passed_ 6713 | pacing_ 6714 | normally_ 6715 | mill 6716 | lyn 6717 | ition 6718 | gers 6719 | football 6720 | faithful 6721 | expose 6722 | expos 6723 | emerge 6724 | ell_ 6725 | depicted 6726 | crude 6727 | criticism 6728 | combination_ 6729 | claim_ 6730 | carr 6731 | bt 6732 | brilliantly_ 6733 | boss 6734 | analy 6735 | ame 6736 | Ray 6737 | Pic 6738 | Lord_ 6739 | Kill 6740 | Fea 6741 | Evil 6742 | Bos 6743 | BS 6744 | AB 6745 | " - 6746 | : 6747 | tta 6748 | trailer 6749 | soli 6750 | rum 6751 | revolve 6752 | ressi 6753 | quiet_ 6754 | portrays_ 6755 | populat 6756 | plant 6757 | oin 6758 | occasionally_ 6759 | nost 6760 | nau 6761 | mun 6762 | lb 6763 | ipat 6764 | hysteri 6765 | grow_ 6766 | gag 6767 | fus 6768 | foot_ 6769 | finger 6770 | figur 6771 | esp 6772 | equi 6773 | ener 6774 | dec 6775 | chain 6776 | broken_ 6777 | agent 6778 | actions_ 6779 | aa 6780 | Russell 6781 | Indian 6782 | Heav 6783 | Daniel_ 6784 | Ast 6785 | /> 6786 | zard 6787 | unlikely 6788 | ump 6789 | tele 6790 | teacher_ 6791 | subplot 6792 | rub 6793 | rte 6794 | rly_ 6795 | radio_ 6796 | quir 6797 | pair_ 6798 | ordinary_ 6799 | oppos 6800 | nsi 6801 | mouth_ 6802 | maintain 6803 | lve 6804 | loc 6805 | inventi 6806 | inexp 6807 | imitat 6808 | generate 6809 | gal_ 6810 | frightening 6811 | frig 6812 | foreign_ 6813 | filmmaker 6814 | excess 6815 | elle 6816 | creator 6817 | count_ 6818 | controvers 6819 | cliche 6820 | casti 6821 | bet_ 6822 | aking_ 6823 | acqu 6824 | Three 6825 | Texas 6826 | Tarzan_ 6827 | Earth_ 6828 | Dan_ 6829 | Besides 6830 | yw 6831 | woods_ 6832 | wan 6833 | vest 6834 | uous 6835 | unit 6836 | therefore_ 6837 | tears_ 6838 | surface 6839 | steals_ 6840 | sni 6841 | shut 6842 | roman 6843 | roll_ 6844 | rele 6845 | reaction 6846 | qualities 6847 | proper_ 6848 | profession 6849 | photo 6850 | months_ 6851 | mem 6852 | makeup 6853 | longe 6854 | lam 6855 | ix 6856 | insist 6857 | inher 6858 | fying_ 6859 | forgettable 6860 | faced 6861 | expens 6862 | enthusias 6863 | describ 6864 | cry 6865 | commentary_ 6866 | collection_ 6867 | civili 6868 | category 6869 | cam 6870 | believed 6871 | ancient_ 6872 | Walter_ 6873 | Sum 6874 | Sometimes 6875 | Sel 6876 | Lou 6877 | Kn 6878 | Joseph_ 6879 | Gro 6880 | Fon 6881 | Columbo 6882 | system_ 6883 | student 6884 | shocked 6885 | sell_ 6886 | ridi 6887 | prior 6888 | primar 6889 | mon_ 6890 | mmer 6891 | lish 6892 | higher_ 6893 | fatal 6894 | employe 6895 | dirty 6896 | cris 6897 | conf 6898 | ckle 6899 | blend 6900 | bility_ 6901 | baseball 6902 | awake 6903 | arr 6904 | ape 6905 | alive_ 6906 | Wid 6907 | Santa_ 6908 | Kei 6909 | Dep 6910 | Burn 6911 | Bob_ 6912 | ´ 6913 | warn 6914 | unknown_ 6915 | twenty_ 6916 | touches 6917 | supernatural 6918 | sitcom 6919 | saving_ 6920 | rupt 6921 | relatively_ 6922 | possibilit 6923 | nose 6924 | mes_ 6925 | massive 6926 | male 6927 | ied 6928 | honor 6929 | heroes_ 6930 | gig 6931 | gangs 6932 | divi 6933 | diat 6934 | consequen 6935 | classics 6936 | cases 6937 | bug 6938 | brief 6939 | bott 6940 | assume_ 6941 | associate 6942 | assistan 6943 | arra 6944 | aria 6945 | absen 6946 | VHS_ 6947 | Steve 6948 | Port 6949 | Paris 6950 | Old_ 6951 | Morgan_ 6952 | Horr 6953 | High_ 6954 | General 6955 | Din 6956 | Dark_ 6957 | Colo 6958 | Avoid_ 6959 | zel 6960 | unnecessary_ 6961 | unexpected_ 6962 | tragedy_ 6963 | tim 6964 | stle 6965 | stereo 6966 | stai 6967 | send_ 6968 | recommended_ 6969 | produce 6970 | pregnan 6971 | noon 6972 | move 6973 | ludicrous 6974 | lude 6975 | length 6976 | ident_ 6977 | ide_ 6978 | grue 6979 | focused 6980 | extraordinar 6981 | desperate 6982 | depress 6983 | dai 6984 | creature_ 6985 | covered_ 6986 | chief 6987 | boss_ 6988 | asking_ 6989 | Yeah 6990 | WW 6991 | Rid 6992 | Island 6993 | FA 6994 | Denn 6995 | Ch 6996 | Basically 6997 | Ang 6998 | Ami 6999 | ?! 7000 | ): 7001 | virtually_ 7002 | underg 7003 | truck 7004 | training 7005 | tif 7006 | surf 7007 | rmin 7008 | reject 7009 | rante 7010 | plots_ 7011 | placed_ 7012 | ni_ 7013 | mature 7014 | lousy_ 7015 | justice_ 7016 | io_ 7017 | glori 7018 | gentle 7019 | fly_ 7020 | explanation_ 7021 | execut 7022 | exaggerat 7023 | events 7024 | elie 7025 | destructi 7026 | choose_ 7027 | characteriz 7028 | char 7029 | cent_ 7030 | books 7031 | bby 7032 | appreciated 7033 | allo 7034 | Neve 7035 | Nee 7036 | Jackson_ 7037 | Irish 7038 | IN_ 7039 | During_ 7040 | Devil 7041 | Count 7042 | yes_ 7043 | user 7044 | unpr 7045 | tual 7046 | treasure 7047 | stronge 7048 | sorr 7049 | ruined_ 7050 | reputation 7051 | rently 7052 | related 7053 | quel 7054 | produce_ 7055 | presum 7056 | politics 7057 | plans 7058 | painting 7059 | killers 7060 | initial_ 7061 | impli 7062 | ify 7063 | hooke 7064 | funnie 7065 | fad 7066 | empty_ 7067 | driver 7068 | di_ 7069 | detect 7070 | designed 7071 | deserve 7072 | believ 7073 | awesome 7074 | accents 7075 | Your 7076 | Thank_ 7077 | RE_ 7078 | Pacino 7079 | Movies 7080 | Jay 7081 | IMDb 7082 | Hugh 7083 | Festival 7084 | Enter 7085 | Donn 7086 | Christi 7087 | Alm 7088 | Academy_ 7089 | 000_ 7090 | ycl 7091 | vivi 7092 | upset 7093 | ups_ 7094 | unp 7095 | tiny 7096 | surprises 7097 | study_ 7098 | strongly_ 7099 | speaks 7100 | size 7101 | riv 7102 | relation 7103 | quee 7104 | py 7105 | never 7106 | mainstream 7107 | libera 7108 | latest 7109 | ising 7110 | insu 7111 | icia 7112 | hurt_ 7113 | freedom 7114 | estl 7115 | emotionally_ 7116 | dust 7117 | desc 7118 | convinced_ 7119 | compell 7120 | cock 7121 | clothes_ 7122 | cameo_ 7123 | blind_ 7124 | besides 7125 | attacke 7126 | Victor_ 7127 | Return 7128 | Poo 7129 | Never_ 7130 | Nel 7131 | Hey 7132 | Caine 7133 | Brando 7134 | ually_ 7135 | tive 7136 | silen 7137 | rew 7138 | quate 7139 | preach 7140 | ological 7141 | nude 7142 | multiple 7143 | link 7144 | lge 7145 | ledge 7146 | laz 7147 | integr 7148 | hn 7149 | hie 7150 | folks_ 7151 | experiences 7152 | emphasi 7153 | earlier 7154 | delivered_ 7155 | deco 7156 | deaths 7157 | continuity 7158 | complicate 7159 | burne 7160 | boyfriend 7161 | awkward_ 7162 | atrocious 7163 | amuse 7164 | ack_ 7165 | Wilson 7166 | Turn 7167 | Robin_ 7168 | Pr 7169 | Om 7170 | Mun 7171 | Meanwhile 7172 | Jessi 7173 | Jess 7174 | Jenn 7175 | Gand 7176 | Et 7177 | Canadian_ 7178 | Brothers 7179 | Bake 7180 | Ah 7181 | 1990 7182 | wreck 7183 | unif 7184 | toi 7185 | teens 7186 | smart 7187 | shir 7188 | serves_ 7189 | sati 7190 | rix 7191 | remain_ 7192 | pub 7193 | propaganda 7194 | players_ 7195 | plas 7196 | ping 7197 | overcom 7198 | orious 7199 | minde 7200 | meeting_ 7201 | lph 7202 | loyal 7203 | lm 7204 | llin 7205 | lake 7206 | kar 7207 | istic 7208 | instru 7209 | included_ 7210 | hire 7211 | graph 7212 | gory_ 7213 | favour 7214 | elde 7215 | dum 7216 | destroy_ 7217 | destin 7218 | denti 7219 | consistent 7220 | cameo 7221 | betr 7222 | arrest 7223 | appea 7224 | animal 7225 | amen 7226 | accidentally 7227 | acce 7228 | Silv 7229 | Saturday_ 7230 | ST_ 7231 | Res 7232 | MGM 7233 | Korea 7234 | Fam 7235 | Asian_ 7236 | Alle 7237 | zu 7238 | weeks 7239 | ticke 7240 | terrifi 7241 | table_ 7242 | storytell 7243 | stopped_ 7244 | steal 7245 | slash 7246 | shoe 7247 | select 7248 | rocke 7249 | roa 7250 | record_ 7251 | previously 7252 | participa 7253 | okay_ 7254 | ogr 7255 | official 7256 | nke 7257 | mistakes 7258 | misca 7259 | memorabl 7260 | logue 7261 | itat 7262 | ists_ 7263 | intelligence_ 7264 | ien 7265 | greate 7266 | ggy 7267 | gangster_ 7268 | critical 7269 | closer 7270 | cartoons 7271 | boot 7272 | accepta 7273 | abu 7274 | TER 7275 | States 7276 | Roberts 7277 | LER 7278 | Jones_ 7279 | Hat 7280 | Eri 7281 | Eliza 7282 | Coop 7283 | wes 7284 | uninteresting 7285 | tense 7286 | teet 7287 | suffers_ 7288 | stranger 7289 | station_ 7290 | scu 7291 | resid 7292 | rand 7293 | popula 7294 | ours 7295 | opene 7296 | occurr 7297 | non_ 7298 | nominated_ 7299 | mol 7300 | missi 7301 | memory_ 7302 | memories_ 7303 | maid 7304 | intri 7305 | inju 7306 | inevitabl 7307 | humans_ 7308 | hanging_ 7309 | gratuitous_ 7310 | gas_ 7311 | forme 7312 | direct 7313 | difficult 7314 | department 7315 | damag 7316 | creatures 7317 | cif 7318 | Warner 7319 | Titan 7320 | Matt_ 7321 | Larr 7322 | KI 7323 | Hor 7324 | Holm 7325 | Fair 7326 | Drew 7327 | Andr 7328 | 1960 7329 | wri 7330 | vely 7331 | uls 7332 | travel_ 7333 | trat 7334 | transf 7335 | timi 7336 | suspen 7337 | struggling 7338 | spoil_ 7339 | slaps 7340 | sink 7341 | reti 7342 | reaction_ 7343 | quest_ 7344 | pilot_ 7345 | narration 7346 | invite 7347 | hearing_ 7348 | gm 7349 | gai 7350 | full 7351 | frankly 7352 | fairy 7353 | expe 7354 | dimension 7355 | dent_ 7356 | deme 7357 | contest 7358 | conscious 7359 | cked 7360 | below_ 7361 | ations 7362 | angel 7363 | alive 7364 | absurd_ 7365 | Wer 7366 | Tha 7367 | Stewar 7368 | Play 7369 | Picture 7370 | Part 7371 | Martin 7372 | Franc 7373 | Fir 7374 | Fas 7375 | Ev 7376 | Cos 7377 | Carre 7378 | Bog 7379 | BU 7380 | Anne_ 7381 | yan 7382 | writ 7383 | vit 7384 | vai 7385 | summ 7386 | ston 7387 | stin 7388 | stif 7389 | sensitive 7390 | rules 7391 | provided_ 7392 | prostitut 7393 | pretentious_ 7394 | poignan 7395 | pai 7396 | paced_ 7397 | offi 7398 | nds_ 7399 | mig 7400 | laughable_ 7401 | instal 7402 | inati 7403 | forget 7404 | eit 7405 | defend 7406 | conse 7407 | beaut 7408 | Spr 7409 | Rol 7410 | Our_ 7411 | NOT 7412 | Lugosi 7413 | Luci 7414 | Las 7415 | Imp 7416 | Ic 7417 | Earl 7418 | Davis_ 7419 | Cod 7420 | !) 7421 | twiste 7422 | sincer 7423 | sacrifice 7424 | references_ 7425 | range_ 7426 | purchase 7427 | orn 7428 | noise 7429 | neo 7430 | mecha 7431 | lun 7432 | insult_ 7433 | fully 7434 | flicks_ 7435 | fair 7436 | endless_ 7437 | eeri 7438 | devot 7439 | curious_ 7440 | comical 7441 | beth_ 7442 | begin 7443 | aura 7444 | ase_ 7445 | ach_ 7446 | Sullivan 7447 | St 7448 | Sarah 7449 | London 7450 | Liv 7451 | Kee 7452 | Jackie_ 7453 | Hong 7454 | Emil 7455 | Clair 7456 | China 7457 | California 7458 | Atlant 7459 | Alice 7460 | "? 7461 | !!!!!! 7462 | xico 7463 | wick 7464 | visi 7465 | viewed_ 7466 | uish 7467 | tribu 7468 | theatrical_ 7469 | talks_ 7470 | smile_ 7471 | seven 7472 | reminisce 7473 | relie 7474 | rci 7475 | rah 7476 | pleasant_ 7477 | plague 7478 | picio 7479 | ounce 7480 | murdered_ 7481 | mul 7482 | mous_ 7483 | mock 7484 | mira 7485 | mete 7486 | loss_ 7487 | initia 7488 | iest_ 7489 | health 7490 | harde 7491 | gran 7492 | goal 7493 | ghe 7494 | fy 7495 | fix 7496 | experienced 7497 | edy 7498 | deci 7499 | conflict_ 7500 | compe 7501 | committed 7502 | cele 7503 | brick 7504 | bour 7505 | bers 7506 | berate 7507 | artist_ 7508 | anth 7509 | Woody_ 7510 | WWI 7511 | V_ 7512 | TT 7513 | Sunday 7514 | Story_ 7515 | Rob_ 7516 | Rachel 7517 | Nin 7518 | Gree 7519 | Friday 7520 | Dev 7521 | Bros 7522 | Brana 7523 | : 7524 | wha 7525 | vig 7526 | views 7527 | unconvincing 7528 | smi 7529 | sibl 7530 | quen 7531 | pointless 7532 | perp 7533 | particular 7534 | overwhelm 7535 | offered 7536 | nominat 7537 | naturally 7538 | locke 7539 | left 7540 | lady 7541 | ilt 7542 | iel 7543 | ication 7544 | historic 7545 | haunting 7546 | gem_ 7547 | figures 7548 | figured_ 7549 | evol 7550 | ery 7551 | eco 7552 | dynami 7553 | duct 7554 | doi 7555 | description 7556 | cultural 7557 | contrac 7558 | confide 7559 | combined 7560 | coin 7561 | cke 7562 | chosen_ 7563 | amed 7564 | agon 7565 | Thomas_ 7566 | THI 7567 | Nation 7568 | MOVIE 7569 | Lev 7570 | Jeff 7571 | Hoffman 7572 | Glen 7573 | Even 7574 | 1st_ 7575 | ! 7576 | yu 7577 | trappe 7578 | thir 7579 | tension 7580 | tail 7581 | table 7582 | split 7583 | sides 7584 | settle 7585 | schem 7586 | save 7587 | ruc 7588 | prime 7589 | posit 7590 | painte 7591 | ndi 7592 | marry_ 7593 | kun 7594 | killing 7595 | isol 7596 | iot 7597 | intend 7598 | impres 7599 | horribly_ 7600 | hing 7601 | heroi 7602 | gle_ 7603 | fri 7604 | fitt 7605 | fighter 7606 | estin 7607 | ee_ 7608 | drunk_ 7609 | directly 7610 | dinos 7611 | chose_ 7612 | changing 7613 | blonde_ 7614 | benefi 7615 | award_ 7616 | av 7617 | aki 7618 | ages 7619 | acter 7620 | VERY_ 7621 | Ur 7622 | Tel 7623 | Superman_ 7624 | Real 7625 | Phi 7626 | Palm 7627 | Nicol 7628 | Johnson 7629 | Jesus_ 7630 | J_ 7631 | Hes 7632 | Helen 7633 | Fun 7634 | Fle 7635 | Dir 7636 | Chap 7637 | vag 7638 | uncon 7639 | ues 7640 | types_ 7641 | tical 7642 | sprin 7643 | sorts 7644 | securi 7645 | previ 7646 | porno 7647 | party 7648 | pare 7649 | method 7650 | medica 7651 | mber 7652 | landscape 7653 | jor 7654 | jail 7655 | imper 7656 | hunter 7657 | happening 7658 | gritty 7659 | gain_ 7660 | flaws_ 7661 | fak 7662 | extra 7663 | edited_ 7664 | ecc 7665 | dragg 7666 | chie 7667 | cant_ 7668 | breast 7669 | authorit 7670 | ated 7671 | ality 7672 | advise 7673 | advan 7674 | according_ 7675 | Wors 7676 | Unlike 7677 | United_ 7678 | Simon_ 7679 | Riv 7680 | Pea 7681 | Michell 7682 | Exp 7683 | Child 7684 | Cham 7685 | Bourne 7686 | Basi 7687 | widow 7688 | walked_ 7689 | upp 7690 | unforg 7691 | uld_ 7692 | tting 7693 | till_ 7694 | thy_ 7695 | talents_ 7696 | suspenseful 7697 | summer_ 7698 | storm 7699 | screening 7700 | scare_ 7701 | realizes_ 7702 | rce 7703 | raw 7704 | qu 7705 | ngl 7706 | magic 7707 | lac 7708 | jobs 7709 | ister_ 7710 | inti 7711 | inha 7712 | ill_ 7713 | hands 7714 | grin 7715 | forward 7716 | examin 7717 | equent 7718 | emi 7719 | contact 7720 | concentrat 7721 | compu 7722 | competen 7723 | biograph 7724 | attach 7725 | amus 7726 | alik 7727 | activi 7728 | William 7729 | Myst 7730 | Luke_ 7731 | Live 7732 | Life_ 7733 | 15 7734 | zes 7735 | werewolf 7736 | warne 7737 | uring_ 7738 | trilogy 7739 | swim 7740 | stumble 7741 | spite 7742 | spends_ 7743 | sleep_ 7744 | sist 7745 | sentence 7746 | rma 7747 | reward 7748 | reviewer_ 7749 | pul 7750 | preten 7751 | performed 7752 | passing 7753 | par_ 7754 | oph 7755 | livi 7756 | kinds_ 7757 | journal 7758 | isticat 7759 | inva 7760 | idi 7761 | ham_ 7762 | fte 7763 | few 7764 | featured 7765 | ern_ 7766 | eag 7767 | dollars 7768 | disb 7769 | depth 7770 | cryin 7771 | cross_ 7772 | content 7773 | contemporary_ 7774 | colors 7775 | chee 7776 | because 7777 | asy 7778 | agent_ 7779 | Willi 7780 | Warr 7781 | Ven 7782 | Vamp 7783 | Roch 7784 | ONE 7785 | Movie 7786 | Mau 7787 | Mass 7788 | MST 7789 | Hin 7790 | Hear 7791 | Gue 7792 | Gl 7793 | Freddy_ 7794 | Definite 7795 | Captain_ 7796 | BBC 7797 | ??? 7798 | 80s_ 7799 | "), 7800 | wol 7801 | weekend 7802 | vampires 7803 | underst 7804 | tial_ 7805 | terrorist 7806 | strength_ 7807 | starre 7808 | soldier_ 7809 | snow 7810 | sity 7811 | ruin_ 7812 | retar 7813 | resu 7814 | required 7815 | recommended 7816 | ques 7817 | propo 7818 | presents_ 7819 | perm 7820 | overt 7821 | olds 7822 | occas 7823 | nn_ 7824 | nen 7825 | nei 7826 | mail 7827 | lost 7828 | lion 7829 | libr 7830 | inner_ 7831 | headed 7832 | happy 7833 | guest 7834 | govern 7835 | friendly 7836 | explains 7837 | ens_ 7838 | effectively 7839 | draw_ 7840 | downright 7841 | dete 7842 | dde 7843 | dare 7844 | cring 7845 | courag 7846 | conspi 7847 | comedie 7848 | claims_ 7849 | cide 7850 | chas 7851 | captivat 7852 | bite 7853 | bare 7854 | author_ 7855 | addition 7856 | Vid 7857 | Rh 7858 | Oliv 7859 | Nata 7860 | Mexican 7861 | Keaton_ 7862 | Iron 7863 | Barb 7864 | ALL_ 7865 | 12 7866 | !), 7867 | worthwhile 7868 | weake 7869 | ung 7870 | understood_ 7871 | unbelievable 7872 | superf 7873 | stolen 7874 | stereotypic 7875 | spoiler 7876 | sight 7877 | scares 7878 | rut 7879 | remove 7880 | remotely_ 7881 | releva 7882 | prese 7883 | poke 7884 | ndou 7885 | mbla 7886 | lucky_ 7887 | lling_ 7888 | legendary 7889 | imagery 7890 | humou 7891 | hug 7892 | hired 7893 | heck 7894 | guilty 7895 | extras 7896 | expected 7897 | everywhere 7898 | dry_ 7899 | drea 7900 | directed 7901 | dimensional_ 7902 | ddi 7903 | dden 7904 | communica 7905 | cham 7906 | buddy 7907 | bank_ 7908 | azi 7909 | algi 7910 | adventures 7911 | accurate_ 7912 | accompan 7913 | Thom 7914 | Still_ 7915 | Someone 7916 | Serious 7917 | SU 7918 | Phill 7919 | Perso 7920 | Patrick_ 7921 | Lei 7922 | Jus 7923 | Gho 7924 | Get_ 7925 | Freeman 7926 | Especially_ 7927 | ?). 7928 | ..." 7929 | -------------------------------------------------------------------------------- /assets/multi-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/multi-image.png -------------------------------------------------------------------------------- /assets/scalar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/scalar.png -------------------------------------------------------------------------------- /assets/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RustingSword/tensorboard_logger/dfdccaab6bc5fc58da0c2e9f3551f9d313038319/assets/text.png -------------------------------------------------------------------------------- /cmake/tensorboard_loggerConfig.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") 4 | check_required_components("@PROJECT_NAME@") 5 | -------------------------------------------------------------------------------- /include/crc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** CRC.H - header file for SNIPPETS CRC and checksum functions 3 | */ 4 | 5 | #ifndef CRC__H 6 | #define CRC__H 7 | 8 | int crc32file(char *name, uint32_t *crc, long *charcnt); 9 | uint32_t crc32buf(const char *buf, size_t len); 10 | uint32_t masked_crc32c(const char *buf, size_t len); 11 | 12 | #endif /* CRC__H */ 13 | -------------------------------------------------------------------------------- /include/tensorboard_logger.h: -------------------------------------------------------------------------------- 1 | #ifndef TENSORBOARD_LOGGER_H 2 | #define TENSORBOARD_LOGGER_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "crc.h" 13 | #include "event.pb.h" 14 | 15 | using tensorflow::Event; 16 | using tensorflow::Summary; 17 | 18 | // extract parent dir or basename from path by finding the last slash 19 | std::string get_parent_dir(const std::string &path); 20 | std::string get_basename(const std::string &path); 21 | 22 | const std::string kProjectorConfigFile = "projector_config.pbtxt"; 23 | const std::string kProjectorPluginName = "projector"; 24 | const std::string kTextPluginName = "text"; 25 | 26 | 27 | struct TensorBoardLoggerOptions 28 | { 29 | // Log is flushed whenever this many entries have been written since the last 30 | // forced flush. 31 | size_t max_queue_size_ = 100000; 32 | TensorBoardLoggerOptions &max_queue_size(size_t max_queue_size) { 33 | max_queue_size_ = max_queue_size; 34 | return *this; 35 | } 36 | 37 | // Log is flushed with this period. 38 | size_t flush_period_s_ = 60; 39 | TensorBoardLoggerOptions &flush_period_s(size_t flush_period_s) { 40 | flush_period_s_ = flush_period_s; 41 | return *this; 42 | } 43 | 44 | bool resume_ = false; 45 | TensorBoardLoggerOptions &resume(bool resume) { 46 | resume_ = resume; 47 | return *this; 48 | } 49 | }; 50 | 51 | class TensorBoardLogger { 52 | public: 53 | 54 | explicit TensorBoardLogger(const std::string &log_file, 55 | const TensorBoardLoggerOptions &options={}) { 56 | this->options = options; 57 | auto basename = get_basename(log_file); 58 | if (basename.find("tfevents") == std::string::npos) { 59 | throw std::runtime_error( 60 | "A valid event file must contain substring \"tfevents\" in its " 61 | "basename, got " + basename); 62 | } 63 | bucket_limits_ = nullptr; 64 | ofs_ = new std::ofstream( 65 | log_file, std::ios::out | 66 | (options.resume_ ? std::ios::app : std::ios::trunc) | 67 | std::ios::binary); 68 | if (!ofs_->is_open()) { 69 | throw std::runtime_error("failed to open log_file " + log_file); 70 | } 71 | log_dir_ = get_parent_dir(log_file); 72 | 73 | flushing_thread = std::thread(&TensorBoardLogger::flusher, this); 74 | } 75 | ~TensorBoardLogger() { 76 | ofs_->close(); 77 | delete ofs_; 78 | if (bucket_limits_ != nullptr) { 79 | delete bucket_limits_; 80 | bucket_limits_ = nullptr; 81 | } 82 | 83 | stop = true; 84 | if (flushing_thread.joinable()) { 85 | flushing_thread.join(); 86 | } 87 | } 88 | int add_scalar(const std::string &tag, int step, double value); 89 | int add_scalar(const std::string &tag, int step, float value); 90 | 91 | // https://github.com/dmlc/tensorboard/blob/master/python/tensorboard/summary.py#L127 92 | template 93 | int add_histogram(const std::string &tag, int step, const T *value, 94 | size_t num) { 95 | if (bucket_limits_ == nullptr) { 96 | generate_default_buckets(); 97 | } 98 | 99 | std::vector counts(bucket_limits_->size(), 0); 100 | double min = std::numeric_limits::max(); 101 | double max = std::numeric_limits::lowest(); 102 | double sum = 0.0; 103 | double sum_squares = 0.0; 104 | for (size_t i = 0; i < num; ++i) { 105 | T v = value[i]; 106 | auto lb = std::lower_bound(bucket_limits_->begin(), 107 | bucket_limits_->end(), v); 108 | counts[lb - bucket_limits_->begin()]++; 109 | sum += v; 110 | sum_squares += v * v; 111 | if (v > max) { 112 | max = v; 113 | } else if (v < min) { 114 | min = v; 115 | } 116 | } 117 | 118 | auto *histo = new tensorflow::HistogramProto(); 119 | histo->set_min(min); 120 | histo->set_max(max); 121 | histo->set_num(num); 122 | histo->set_sum(sum); 123 | histo->set_sum_squares(sum_squares); 124 | for (size_t i = 0; i < counts.size(); ++i) { 125 | if (counts[i] > 0) { 126 | histo->add_bucket_limit((*bucket_limits_)[i]); 127 | histo->add_bucket(counts[i]); 128 | } 129 | } 130 | 131 | auto *summary = new tensorflow::Summary(); 132 | auto *v = summary->add_value(); 133 | v->set_tag(tag); 134 | v->set_allocated_histo(histo); 135 | 136 | return add_event(step, summary); 137 | }; 138 | 139 | template 140 | int add_histogram(const std::string &tag, int step, 141 | const std::vector &values) { 142 | return add_histogram(tag, step, values.data(), values.size()); 143 | }; 144 | 145 | // metadata (such as display_name, description) of the same tag will be 146 | // stripped to keep only the first one. 147 | int add_image(const std::string &tag, int step, 148 | const std::string &encoded_image, int height, int width, 149 | int channel, const std::string &display_name = "", 150 | const std::string &description = ""); 151 | int add_images(const std::string &tag, int step, 152 | const std::vector &encoded_images, int height, 153 | int width, const std::string &display_name = "", 154 | const std::string &description = ""); 155 | int add_audio(const std::string &tag, int step, 156 | const std::string &encoded_audio, float sample_rate, 157 | int num_channels, int length_frame, 158 | const std::string &content_type, 159 | const std::string &display_name = "", 160 | const std::string &description = ""); 161 | int add_text(const std::string &tag, int step, const char *text); 162 | 163 | // `tensordata` and `metadata` should be in tsv format, and should be 164 | // manually created before calling `add_embedding` 165 | // 166 | // `tensor_name` is mandated to differentiate tensors 167 | // 168 | // TODO add sprite image support 169 | int add_embedding( 170 | const std::string &tensor_name, const std::string &tensordata_path, 171 | const std::string &metadata_path = "", 172 | const std::vector &tensor_shape = std::vector(), 173 | int step = 1 /* no effect */); 174 | // write tensor to binary file 175 | int add_embedding( 176 | const std::string &tensor_name, 177 | const std::vector> &tensor, 178 | const std::string &tensordata_filename, 179 | const std::vector &metadata = std::vector(), 180 | const std::string &metadata_filename = "", 181 | int step = 1 /* no effect */); 182 | int add_embedding( 183 | const std::string &tensor_name, const float *tensor, 184 | const std::vector &tensor_shape, 185 | const std::string &tensordata_filename, 186 | const std::vector &metadata = std::vector(), 187 | const std::string &metadata_filename = "", 188 | int step = 1 /* no effect */); 189 | 190 | private: 191 | int generate_default_buckets(); 192 | int add_event(int64_t step, Summary *summary); 193 | int write(Event &event); 194 | void flusher(); 195 | 196 | std::string log_dir_; 197 | std::ofstream *ofs_; 198 | std::vector *bucket_limits_; 199 | TensorBoardLoggerOptions options; 200 | 201 | std::atomic stop{false}; 202 | size_t queue_size{0}; 203 | std::thread flushing_thread; 204 | std::mutex file_object_mtx{}; 205 | }; // class TensorBoardLogger 206 | 207 | #endif // TENSORBOARD_LOGGER_H 208 | -------------------------------------------------------------------------------- /proto/event.proto: -------------------------------------------------------------------------------- 1 | 2 | syntax = "proto3"; 3 | 4 | package tensorflow; 5 | 6 | import "summary.proto"; 7 | 8 | option cc_enable_arenas = true; 9 | option java_outer_classname = "EventProtos"; 10 | option java_multiple_files = true; 11 | option java_package = "org.tensorflow.util"; 12 | 13 | // Protocol buffer representing an event that happened during 14 | // the execution of a Brain model. 15 | message Event { 16 | // Timestamp of the event. 17 | double wall_time = 1; 18 | 19 | // Global step of the event. 20 | int64 step = 2; 21 | 22 | oneof what { 23 | // An event file was started, with the specified version. 24 | // This is use to identify the contents of the record IO files 25 | // easily. Current version is "brain.Event:2". All versions 26 | // start with "brain.Event:". 27 | string file_version = 3; 28 | // An encoded version of a GraphDef. 29 | bytes graph_def = 4; 30 | // A summary was generated. 31 | Summary summary = 5; 32 | // The user output a log message. Not all messages are logged, only ones 33 | // generated via the Python tensorboard_logging module. 34 | LogMessage log_message = 6; 35 | // The state of the session which can be used for restarting after crashes. 36 | SessionLog session_log = 7; 37 | // The metadata returned by running a session.run() call. 38 | TaggedRunMetadata tagged_run_metadata = 8; 39 | // An encoded version of a MetaGraphDef. 40 | bytes meta_graph_def = 9; 41 | } 42 | } 43 | 44 | // Protocol buffer used for logging messages to the events file. 45 | message LogMessage { 46 | enum Level { 47 | UNKNOWN = 0; 48 | // Note: The logging level 10 cannot be named DEBUG. Some software 49 | // projects compile their C/C++ code with -DDEBUG in debug builds. So the 50 | // C++ code generated from this file should not have an identifier named 51 | // DEBUG. 52 | DEBUGGING = 10; 53 | INFO = 20; 54 | WARN = 30; 55 | ERROR = 40; 56 | FATAL = 50; 57 | } 58 | Level level = 1; 59 | string message = 2; 60 | } 61 | 62 | // Protocol buffer used for logging session state. 63 | message SessionLog { 64 | enum SessionStatus { 65 | STATUS_UNSPECIFIED = 0; 66 | START = 1; 67 | STOP = 2; 68 | CHECKPOINT = 3; 69 | } 70 | 71 | SessionStatus status = 1; 72 | // This checkpoint_path contains both the path and filename. 73 | string checkpoint_path = 2; 74 | string msg = 3; 75 | } 76 | 77 | // For logging the metadata output for a single session.run() call. 78 | message TaggedRunMetadata { 79 | // Tag name associated with this metadata. 80 | string tag = 1; 81 | // Byte-encoded version of the `RunMetadata` proto in order to allow lazy 82 | // deserialization. 83 | bytes run_metadata = 2; 84 | } 85 | 86 | // Worker heartbeat messages. Support for these operations is currently 87 | // internal and expected to change. 88 | 89 | // Current health status of a worker. 90 | enum WorkerHealth { 91 | OK = 0; // By default a worker is healthy. 92 | RECEIVED_SHUTDOWN_SIGNAL = 1; 93 | INTERNAL_ERROR = 2; 94 | SHUTTING_DOWN = 3; // Worker has been instructed to shutdown after a timeout. 95 | } 96 | 97 | // Indicates the behavior of the worker when an internal error or shutdown 98 | // signal is received. 99 | enum WorkerShutdownMode { 100 | DEFAULT = 0; 101 | NOT_CONFIGURED = 1; 102 | WAIT_FOR_COORDINATOR = 2; 103 | SHUTDOWN_AFTER_TIMEOUT = 3; 104 | } 105 | 106 | message WatchdogConfig { 107 | int64 timeout_ms = 1; 108 | } 109 | 110 | message RequestedExitCode { 111 | int32 exit_code = 1; 112 | } 113 | 114 | message WorkerHeartbeatRequest { 115 | WorkerShutdownMode shutdown_mode = 1; 116 | WatchdogConfig watchdog_config = 2; 117 | RequestedExitCode exit_code = 3; 118 | } 119 | 120 | message WorkerHeartbeatResponse { 121 | WorkerHealth health_status = 1; 122 | repeated Event worker_log = 2; 123 | string hostname = 3; 124 | } 125 | -------------------------------------------------------------------------------- /proto/projector_config.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tensorflow; 4 | 5 | option cc_enable_arenas = true; 6 | 7 | message SpriteMetadata { 8 | string image_path = 1; 9 | // [width, height] of a single image in the sprite. 10 | repeated uint32 single_image_dim = 2; 11 | } 12 | 13 | message EmbeddingInfo { 14 | string tensor_name = 1; 15 | string metadata_path = 2; 16 | string bookmarks_path = 3; 17 | // Shape of the 2D tensor [N x D]. If missing, it will be inferred from the 18 | // model checkpoint. 19 | repeated uint32 tensor_shape = 4; 20 | SpriteMetadata sprite = 5; 21 | // Path to the TSV file holding the tensor values. If missing, the tensor 22 | // is assumed to be stored in the model checkpoint. 23 | string tensor_path = 6; 24 | } 25 | 26 | message ProjectorConfig { 27 | // Path to the checkpoint file. Use either this or model_checkpoint_dir. 28 | string model_checkpoint_path = 1; 29 | repeated EmbeddingInfo embeddings = 2; 30 | // Path to the checkpoint directory. The directory will be scanned for the 31 | // latest checkpoint file. 32 | string model_checkpoint_dir = 3; 33 | } -------------------------------------------------------------------------------- /proto/resource_handle.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tensorflow; 4 | 5 | import "tensor_shape.proto"; 6 | import "types.proto"; 7 | 8 | option cc_enable_arenas = true; 9 | option java_outer_classname = "ResourceHandle"; 10 | option java_multiple_files = true; 11 | option java_package = "org.tensorflow.framework"; 12 | option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework/resource_handle_go_proto"; 13 | 14 | // Protocol buffer representing a handle to a tensorflow resource. Handles are 15 | // not valid across executions, but can be serialized back and forth from within 16 | // a single run. 17 | message ResourceHandleProto { 18 | // Unique name for the device containing the resource. 19 | string device = 1; 20 | 21 | // Container in which this resource is placed. 22 | string container = 2; 23 | 24 | // Unique name of this resource. 25 | string name = 3; 26 | 27 | // Hash code for the type of the resource. Is only valid in the same device 28 | // and in the same execution. 29 | uint64 hash_code = 4; 30 | 31 | // For debug-only, the name of the type pointed to by this handle, if 32 | // available. 33 | string maybe_type_name = 5; 34 | 35 | // Protocol buffer representing a pair of (data type, tensor shape). 36 | message DtypeAndShape { 37 | DataType dtype = 1; 38 | TensorShapeProto shape = 2; 39 | } 40 | 41 | // Data types and shapes for the underlying resource. 42 | repeated DtypeAndShape dtypes_and_shapes = 6; 43 | 44 | // A set of devices containing the resource. If empty, the resource only 45 | // exists on `device`. 46 | repeated string allowed_devices = 7; 47 | } 48 | -------------------------------------------------------------------------------- /proto/summary.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tensorflow; 4 | 5 | import "tensor.proto"; 6 | 7 | option cc_enable_arenas = true; 8 | option java_outer_classname = "SummaryProtos"; 9 | option java_multiple_files = true; 10 | option java_package = "org.tensorflow.framework"; 11 | option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework/summary_go_proto"; 12 | 13 | // Metadata associated with a series of Summary data 14 | message SummaryDescription { 15 | // Hint on how plugins should process the data in this series. 16 | // Supported values include "scalar", "histogram", "image", "audio" 17 | string type_hint = 1; 18 | } 19 | 20 | // Serialization format for histogram module in 21 | // core/lib/histogram/histogram.h 22 | message HistogramProto { 23 | double min = 1; 24 | double max = 2; 25 | double num = 3; 26 | double sum = 4; 27 | double sum_squares = 5; 28 | 29 | // Parallel arrays encoding the bucket boundaries and the bucket values. 30 | // bucket(i) is the count for the bucket i. The range for 31 | // a bucket is: 32 | // i == 0: -DBL_MAX .. bucket_limit(0) 33 | // i != 0: bucket_limit(i-1) .. bucket_limit(i) 34 | repeated double bucket_limit = 6 [packed = true]; 35 | repeated double bucket = 7 [packed = true]; 36 | } 37 | 38 | // A SummaryMetadata encapsulates information on which plugins are able to make 39 | // use of a certain summary value. 40 | message SummaryMetadata { 41 | message PluginData { 42 | // The name of the plugin this data pertains to. 43 | string plugin_name = 1; 44 | 45 | // The content to store for the plugin. The best practice is for this to be 46 | // a binary serialized protocol buffer. 47 | bytes content = 2; 48 | } 49 | 50 | // Data that associates a summary with a certain plugin. 51 | PluginData plugin_data = 1; 52 | 53 | // Display name for viewing in TensorBoard. 54 | string display_name = 2; 55 | 56 | // Longform readable description of the summary sequence. Markdown supported. 57 | string summary_description = 3; 58 | 59 | // Class of data stored in this time series. Required for compatibility with 60 | // TensorBoard's generic data facilities (`DataProvider`, et al.). This value 61 | // imposes constraints on the dtype and shape of the corresponding tensor 62 | // values. See `DataClass` docs for details. 63 | DataClass data_class = 4; 64 | } 65 | 66 | enum DataClass { 67 | // Unknown data class, used (implicitly) for legacy data. Will not be 68 | // processed by data ingestion pipelines. 69 | DATA_CLASS_UNKNOWN = 0; 70 | // Scalar time series. Each `Value` for the corresponding tag must have 71 | // `tensor` set to a rank-0 tensor of floating-point dtype, which will be 72 | // converted to float64. 73 | DATA_CLASS_SCALAR = 1; 74 | // Tensor time series. Each `Value` for the corresponding tag must have 75 | // `tensor` set. The tensor value is arbitrary, but should be small to 76 | // accommodate direct storage in database backends: an upper bound of a few 77 | // kilobytes is a reasonable rule of thumb. 78 | DATA_CLASS_TENSOR = 2; 79 | // Blob sequence time series. Each `Value` for the corresponding tag must 80 | // have `tensor` set to a rank-1 tensor of bytestring dtype. 81 | DATA_CLASS_BLOB_SEQUENCE = 3; 82 | } 83 | 84 | // A Summary is a set of named values to be displayed by the 85 | // visualizer. 86 | // 87 | // Summaries are produced regularly during training, as controlled by 88 | // the "summary_interval_secs" attribute of the training operation. 89 | // Summaries are also produced at the end of an evaluation. 90 | message Summary { 91 | message Image { 92 | // Dimensions of the image. 93 | int32 height = 1; 94 | int32 width = 2; 95 | // Valid colorspace values are 96 | // 1 - grayscale 97 | // 2 - grayscale + alpha 98 | // 3 - RGB 99 | // 4 - RGBA 100 | // 5 - DIGITAL_YUV 101 | // 6 - BGRA 102 | int32 colorspace = 3; 103 | // Image data in encoded format. All image formats supported by 104 | // image_codec::CoderUtil can be stored here. 105 | bytes encoded_image_string = 4; 106 | } 107 | 108 | message Audio { 109 | // Sample rate of the audio in Hz. 110 | float sample_rate = 1; 111 | // Number of channels of audio. 112 | int64 num_channels = 2; 113 | // Length of the audio in frames (samples per channel). 114 | int64 length_frames = 3; 115 | // Encoded audio data and its associated RFC 2045 content type (e.g. 116 | // "audio/wav"). 117 | bytes encoded_audio_string = 4; 118 | string content_type = 5; 119 | } 120 | 121 | message Value { 122 | // This field is deprecated and will not be set. 123 | string node_name = 7; 124 | 125 | // Tag name for the data. Used by TensorBoard plugins to organize data. Tags 126 | // are often organized by scope (which contains slashes to convey 127 | // hierarchy). For example: foo/bar/0 128 | string tag = 1; 129 | 130 | // Contains metadata on the summary value such as which plugins may use it. 131 | // Take note that many summary values may lack a metadata field. This is 132 | // because the FileWriter only keeps a metadata object on the first summary 133 | // value with a certain tag for each tag. TensorBoard then remembers which 134 | // tags are associated with which plugins. This saves space. 135 | SummaryMetadata metadata = 9; 136 | 137 | // Value associated with the tag. 138 | oneof value { 139 | float simple_value = 2; 140 | bytes obsolete_old_style_histogram = 3; 141 | Image image = 4; 142 | HistogramProto histo = 5; 143 | Audio audio = 6; 144 | TensorProto tensor = 8; 145 | } 146 | } 147 | 148 | // Set of values for the summary. 149 | repeated Value value = 1; 150 | } 151 | 152 | -------------------------------------------------------------------------------- /proto/tensor.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tensorflow; 4 | 5 | import "resource_handle.proto"; 6 | import "tensor_shape.proto"; 7 | import "types.proto"; 8 | 9 | option cc_enable_arenas = true; 10 | option java_outer_classname = "TensorProtos"; 11 | option java_multiple_files = true; 12 | option java_package = "org.tensorflow.framework"; 13 | option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework/tensor_go_proto"; 14 | 15 | // Protocol buffer representing a tensor. 16 | message TensorProto { 17 | DataType dtype = 1; 18 | 19 | // Shape of the tensor. TODO(touts): sort out the 0-rank issues. 20 | TensorShapeProto tensor_shape = 2; 21 | 22 | // Only one of the representations below is set, one of "tensor_contents" and 23 | // the "xxx_val" attributes. We are not using oneof because as oneofs cannot 24 | // contain repeated fields it would require another extra set of messages. 25 | 26 | // Version number. 27 | // 28 | // In version 0, if the "repeated xxx" representations contain only one 29 | // element, that element is repeated to fill the shape. This makes it easy 30 | // to represent a constant Tensor with a single value. 31 | int32 version_number = 3; 32 | 33 | // Serialized raw tensor content from either Tensor::AsProtoTensorContent or 34 | // memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation 35 | // can be used for all tensor types. The purpose of this representation is to 36 | // reduce serialization overhead during RPC call by avoiding serialization of 37 | // many repeated small items. 38 | bytes tensor_content = 4; 39 | 40 | // Type specific representations that make it easy to create tensor protos in 41 | // all languages. Only the representation corresponding to "dtype" can 42 | // be set. The values hold the flattened representation of the tensor in 43 | // row major order. 44 | 45 | // DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll 46 | // have some pointless zero padding for each value here. 47 | repeated int32 half_val = 13 [packed = true]; 48 | 49 | // DT_FLOAT. 50 | repeated float float_val = 5 [packed = true]; 51 | 52 | // DT_DOUBLE. 53 | repeated double double_val = 6 [packed = true]; 54 | 55 | // DT_INT32, DT_INT16, DT_INT8, DT_UINT8. 56 | repeated int32 int_val = 7 [packed = true]; 57 | 58 | // DT_STRING 59 | repeated bytes string_val = 8; 60 | 61 | // DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real 62 | // and imaginary parts of i-th single precision complex. 63 | repeated float scomplex_val = 9 [packed = true]; 64 | 65 | // DT_INT64 66 | repeated int64 int64_val = 10 [packed = true]; 67 | 68 | // DT_BOOL 69 | repeated bool bool_val = 11 [packed = true]; 70 | 71 | // DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real 72 | // and imaginary parts of i-th double precision complex. 73 | repeated double dcomplex_val = 12 [packed = true]; 74 | 75 | // DT_RESOURCE 76 | repeated ResourceHandleProto resource_handle_val = 14; 77 | 78 | // DT_VARIANT 79 | repeated VariantTensorDataProto variant_val = 15; 80 | 81 | // DT_UINT32 82 | repeated uint32 uint32_val = 16 [packed = true]; 83 | 84 | // DT_UINT64 85 | repeated uint64 uint64_val = 17 [packed = true]; 86 | } 87 | 88 | // Protocol buffer representing the serialization format of DT_VARIANT tensors. 89 | message VariantTensorDataProto { 90 | // Name of the type of objects being serialized. 91 | string type_name = 1; 92 | // Portions of the object that are not Tensors. 93 | bytes metadata = 2; 94 | // Tensors contained within objects being serialized. 95 | repeated TensorProto tensors = 3; 96 | } 97 | 98 | -------------------------------------------------------------------------------- /proto/tensor_shape.proto: -------------------------------------------------------------------------------- 1 | // Protocol buffer representing the shape of tensors. 2 | 3 | syntax = "proto3"; 4 | option cc_enable_arenas = true; 5 | option java_outer_classname = "TensorShapeProtos"; 6 | option java_multiple_files = true; 7 | option java_package = "org.tensorflow.framework"; 8 | option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework/tensor_shape_go_proto"; 9 | 10 | package tensorflow; 11 | 12 | // Dimensions of a tensor. 13 | message TensorShapeProto { 14 | // One dimension of the tensor. 15 | message Dim { 16 | // Size of the tensor in that dimension. 17 | // This value must be >= -1, but values of -1 are reserved for "unknown" 18 | // shapes (values of -1 mean "unknown" dimension). Certain wrappers 19 | // that work with TensorShapeProto may fail at runtime when deserializing 20 | // a TensorShapeProto containing a dim value of -1. 21 | int64 size = 1; 22 | 23 | // Optional name of the tensor dimension. 24 | string name = 2; 25 | }; 26 | 27 | // Dimensions of the tensor, such as {"input", 30}, {"output", 40} 28 | // for a 30 x 40 2D tensor. If an entry has size -1, this 29 | // corresponds to a dimension of unknown size. The names are 30 | // optional. 31 | // 32 | // The order of entries in "dim" matters: It indicates the layout of the 33 | // values in the tensor in-memory representation. 34 | // 35 | // The first entry in "dim" is the outermost dimension used to layout the 36 | // values, the last entry is the innermost dimension. This matches the 37 | // in-memory layout of RowMajor Eigen tensors. 38 | // 39 | // If "dim.size()" > 0, "unknown_rank" must be false. 40 | repeated Dim dim = 2; 41 | 42 | // If true, the number of dimensions in the shape is unknown. 43 | // 44 | // If true, "dim.size()" must be 0. 45 | bool unknown_rank = 3; 46 | }; 47 | 48 | -------------------------------------------------------------------------------- /proto/types.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package tensorflow; 4 | option cc_enable_arenas = true; 5 | option java_outer_classname = "TypesProtos"; 6 | option java_multiple_files = true; 7 | option java_package = "org.tensorflow.framework"; 8 | option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework/types_go_proto"; 9 | 10 | // (== suppress_warning documentation-presence ==) 11 | // LINT.IfChange 12 | enum DataType { 13 | // Not a legal value for DataType. Used to indicate a DataType field 14 | // has not been set. 15 | DT_INVALID = 0; 16 | 17 | // Data types that all computation devices are expected to be 18 | // capable to support. 19 | DT_FLOAT = 1; 20 | DT_DOUBLE = 2; 21 | DT_INT32 = 3; 22 | DT_UINT8 = 4; 23 | DT_INT16 = 5; 24 | DT_INT8 = 6; 25 | DT_STRING = 7; 26 | DT_COMPLEX64 = 8; // Single-precision complex 27 | DT_INT64 = 9; 28 | DT_BOOL = 10; 29 | DT_QINT8 = 11; // Quantized int8 30 | DT_QUINT8 = 12; // Quantized uint8 31 | DT_QINT32 = 13; // Quantized int32 32 | DT_BFLOAT16 = 14; // Float32 truncated to 16 bits. Only for cast ops. 33 | DT_QINT16 = 15; // Quantized int16 34 | DT_QUINT16 = 16; // Quantized uint16 35 | DT_UINT16 = 17; 36 | DT_COMPLEX128 = 18; // Double-precision complex 37 | DT_HALF = 19; 38 | DT_RESOURCE = 20; 39 | DT_VARIANT = 21; // Arbitrary C++ data types 40 | DT_UINT32 = 22; 41 | DT_UINT64 = 23; 42 | 43 | // Do not use! These are only for parameters. Every enum above 44 | // should have a corresponding value below (verified by types_test). 45 | DT_FLOAT_REF = 101; 46 | DT_DOUBLE_REF = 102; 47 | DT_INT32_REF = 103; 48 | DT_UINT8_REF = 104; 49 | DT_INT16_REF = 105; 50 | DT_INT8_REF = 106; 51 | DT_STRING_REF = 107; 52 | DT_COMPLEX64_REF = 108; 53 | DT_INT64_REF = 109; 54 | DT_BOOL_REF = 110; 55 | DT_QINT8_REF = 111; 56 | DT_QUINT8_REF = 112; 57 | DT_QINT32_REF = 113; 58 | DT_BFLOAT16_REF = 114; 59 | DT_QINT16_REF = 115; 60 | DT_QUINT16_REF = 116; 61 | DT_UINT16_REF = 117; 62 | DT_COMPLEX128_REF = 118; 63 | DT_HALF_REF = 119; 64 | DT_RESOURCE_REF = 120; 65 | DT_VARIANT_REF = 121; 66 | DT_UINT32_REF = 122; 67 | DT_UINT64_REF = 123; 68 | } 69 | // LINT.ThenChange( 70 | // https://www.tensorflow.org/code/tensorflow/c/tf_datatype.h, 71 | // https://www.tensorflow.org/code/tensorflow/go/tensor.go, 72 | // https://www.tensorflow.org/code/tensorflow/core/framework/tensor.cc, 73 | // https://www.tensorflow.org/code/tensorflow/core/framework/types.h, 74 | // https://www.tensorflow.org/code/tensorflow/core/framework/types.cc, 75 | // https://www.tensorflow.org/code/tensorflow/python/framework/dtypes.py, 76 | // https://www.tensorflow.org/code/tensorflow/python/framework/function.py) 77 | 78 | -------------------------------------------------------------------------------- /src/crc.cc: -------------------------------------------------------------------------------- 1 | /* Crc - 32 BIT ANSI X3.66 CRC checksum files */ 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | /**********************************************************************\ 8 | |* Demonstration program to compute the 32-bit CRC used as the frame *| 9 | |* check sequence in ADCCP (ANSI X3.66, also known as FIPS PUB 71 *| 10 | |* and FED-STD-1003, the U.S. versions of CCITT's X.25 link-level *| 11 | |* protocol). The 32-bit FCS was added via the Federal Register, *| 12 | |* 1 June 1982, p.23798. I presume but don't know for certain that *| 13 | |* this polynomial is or will be included in CCITT V.41, which *| 14 | |* defines the 16-bit CRC (often called CRC-CCITT) polynomial. FIPS *| 15 | |* PUB 78 says that the 32-bit FCS reduces otherwise undetected *| 16 | |* errors by a factor of 10^-5 over 16-bit FCS. *| 17 | \**********************************************************************/ 18 | 19 | /* Need an unsigned type capable of holding 32 bits; */ 20 | 21 | #define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8)) 22 | 23 | /* Copyright (C) 1986 Gary S. Brown. You may use this program, or 24 | code or tables extracted from it, as desired without restriction.*/ 25 | 26 | /* First, the polynomial itself and its table of feedback terms. The */ 27 | /* polynomial is */ 28 | /* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */ 29 | /* Note that we take it "backwards" and put the highest-order term in */ 30 | /* the lowest-order bit. The X^32 term is "implied"; the LSB is the */ 31 | /* X^31 term, etc. The X^0 term (usually shown as "+1") results in */ 32 | /* the MSB being 1. */ 33 | 34 | /* Note that the usual hardware shift register implementation, which */ 35 | /* is what we're using (we're merely optimizing it by doing eight-bit */ 36 | /* chunks at a time) shifts bits into the lowest-order term. In our */ 37 | /* implementation, that means shifting towards the right. Why do we */ 38 | /* do it this way? Because the calculated CRC must be transmitted in */ 39 | /* order from highest-order term to lowest-order term. UARTs transmit */ 40 | /* characters in order from LSB to MSB. By storing the CRC this way, */ 41 | /* we hand it to the UART in the order low-byte to high-byte; the UART */ 42 | /* sends each low-bit to hight-bit; and the result is transmission bit */ 43 | /* by bit from highest- to lowest-order term without requiring any bit */ 44 | /* shuffling on our part. Reception works similarly. */ 45 | 46 | /* The feedback terms table consists of 256, 32-bit entries. Notes: */ 47 | /* */ 48 | /* 1. The table can be generated at runtime if desired; code to do so */ 49 | /* is shown later. It might not be obvious, but the feedback */ 50 | /* terms simply represent the results of eight shift/xor opera- */ 51 | /* tions for all combinations of data and CRC register values. */ 52 | /* */ 53 | /* 2. The CRC accumulation logic is the same for all CRC polynomials, */ 54 | /* be they sixteen or thirty-two bits wide. You simply choose the */ 55 | /* appropriate table. Alternatively, because the table can be */ 56 | /* generated at runtime, you can start by generating the table for */ 57 | /* the polynomial in question and use exactly the same "updcrc", */ 58 | /* if your application needn't simultaneously handle two CRC */ 59 | /* polynomials. (Note, however, that XMODEM is strange.) */ 60 | /* */ 61 | /* 3. For 16-bit CRCs, the table entries need be only 16 bits wide; */ 62 | /* of course, 32-bit entries work OK if the high 16 bits are zero. */ 63 | /* */ 64 | /* 4. The values must be right-shifted by eight bits by the "updcrc" */ 65 | /* logic; the shift must be unsigned (bring in zeroes). On some */ 66 | /* hardware you could probably optimize the shift in assembler by */ 67 | /* using byte-swap instructions. */ 68 | 69 | // http://stackoverflow.com/a/26612761 70 | static uint32_t crc_32_tab[] = { /* CRC polynomial 0xedb88320 */ 71 | /* 72 | 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 73 | 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 74 | 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 75 | 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 76 | 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 77 | 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 78 | 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 79 | 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 80 | 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 81 | 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 82 | 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 83 | 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 84 | 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 85 | 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 86 | 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 87 | 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 88 | 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 89 | 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 90 | 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 91 | 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 92 | 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 93 | 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 94 | 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 95 | 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 96 | 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 97 | 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 98 | 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 99 | 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 100 | 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 101 | 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 102 | 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 103 | 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 104 | 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 105 | 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 106 | 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 107 | 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 108 | 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 109 | 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 110 | 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 111 | 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 112 | 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 113 | 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 114 | 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d 115 | */ 116 | 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 117 | 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, 118 | 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 119 | 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, 120 | 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 121 | 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, 122 | 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 123 | 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b, 124 | 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 125 | 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, 126 | 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 127 | 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, 128 | 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 129 | 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a, 130 | 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 131 | 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, 132 | 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 133 | 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, 134 | 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 135 | 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198, 136 | 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 137 | 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, 138 | 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 139 | 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, 140 | 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 141 | 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789, 142 | 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 143 | 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, 144 | 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 145 | 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, 146 | 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 147 | 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829, 148 | 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 149 | 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, 150 | 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 151 | 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, 152 | 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 153 | 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc, 154 | 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 155 | 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, 156 | 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 157 | 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, 158 | 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 159 | 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982, 160 | 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 161 | 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, 162 | 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 163 | 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, 164 | 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 165 | 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f, 166 | 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 167 | 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, 168 | 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 169 | 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, 170 | 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 171 | 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f, 172 | 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 173 | 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, 174 | 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 175 | 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, 176 | 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 177 | 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e, 178 | 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 179 | 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351, 180 | }; 181 | 182 | uint32_t updateCRC32(unsigned char ch, uint32_t crc) 183 | { 184 | return UPDC32(ch, crc); 185 | } 186 | 187 | int crc32file(char *name, uint32_t *crc, long *charcnt) 188 | { 189 | FILE *fin; 190 | uint32_t oldcrc32; 191 | int c; 192 | 193 | oldcrc32 = 0xFFFFFFFF; *charcnt = 0; 194 | #ifdef MSDOS 195 | if ((fin=fopen(name, "rb")) == NULL) // NOLINT 196 | #else 197 | if ((fin=fopen(name, "r")) == NULL) // NOLINT 198 | #endif 199 | { 200 | perror(name); 201 | return -1; 202 | } 203 | while ((c=getc(fin)) != EOF) 204 | { 205 | ++*charcnt; 206 | oldcrc32 = UPDC32(c, oldcrc32); 207 | } 208 | 209 | if (ferror(fin)) 210 | { 211 | perror(name); 212 | *charcnt = -1; 213 | } 214 | fclose(fin); 215 | 216 | *crc = oldcrc32 = ~oldcrc32; 217 | 218 | return 0; 219 | } 220 | 221 | uint32_t crc32buf(const char *buf, size_t len) 222 | { 223 | uint32_t oldcrc32; 224 | 225 | oldcrc32 = 0xFFFFFFFF; 226 | 227 | for ( ; len; --len, ++buf) 228 | { 229 | oldcrc32 = UPDC32(*buf, oldcrc32); 230 | } 231 | 232 | return ~oldcrc32; 233 | } 234 | 235 | uint32_t masked_crc32c(const char *buf, size_t len) { 236 | uint32_t crc = crc32buf(buf, len); 237 | return (crc >> 15 | crc << 17) + 0xa282ead8; 238 | } 239 | 240 | #ifdef TEST 241 | 242 | int main(int argc, char *argv[]) 243 | { 244 | uint32_t crc; 245 | long charcnt; 246 | int errors = 0; 247 | 248 | while (--argc > 0) 249 | { 250 | errors |= crc32file(*++argv, &crc, &charcnt); 251 | printf("%08X %7ld %s\n", crc, charcnt, *argv); 252 | } 253 | 254 | return 0; 255 | } 256 | 257 | #endif /* TEST */ 258 | -------------------------------------------------------------------------------- /src/tensorboard_logger.cc: -------------------------------------------------------------------------------- 1 | #include "tensorboard_logger.h" 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include "event.pb.h" 17 | #include "projector_config.pb.h" 18 | 19 | using std::endl; 20 | using std::ifstream; 21 | using std::numeric_limits; 22 | using std::ofstream; 23 | using std::ostringstream; 24 | using std::string; 25 | using std::to_string; 26 | using std::vector; 27 | using google::protobuf::TextFormat; 28 | using tensorflow::EmbeddingInfo; 29 | using tensorflow::Event; 30 | using tensorflow::HistogramProto; 31 | using tensorflow::ProjectorConfig; 32 | // using tensorflow::SpriteMetadata; 33 | using tensorflow::Summary; 34 | using tensorflow::SummaryMetadata; 35 | using tensorflow::TensorProto; 36 | 37 | // https://github.com/dmlc/tensorboard/blob/master/python/tensorboard/summary.py#L115 38 | int TensorBoardLogger::generate_default_buckets() { 39 | if (bucket_limits_ == nullptr) { 40 | bucket_limits_ = new vector; 41 | vector pos_buckets, neg_buckets; 42 | double v = 1e-12; 43 | while (v < 1e20) { 44 | pos_buckets.push_back(v); 45 | neg_buckets.push_back(-v); 46 | v *= 1.1; 47 | } 48 | pos_buckets.push_back(std::numeric_limits::max()); 49 | neg_buckets.push_back(std::numeric_limits::lowest()); 50 | 51 | bucket_limits_->insert(bucket_limits_->end(), neg_buckets.rbegin(), 52 | neg_buckets.rend()); 53 | bucket_limits_->insert(bucket_limits_->end(), pos_buckets.begin(), 54 | pos_buckets.end()); 55 | } 56 | 57 | return 0; 58 | } 59 | 60 | int TensorBoardLogger::add_scalar(const string &tag, int step, double value) { 61 | auto *summary = new Summary(); 62 | auto *v = summary->add_value(); 63 | v->set_tag(tag); 64 | v->set_simple_value(value); 65 | return add_event(step, summary); 66 | } 67 | 68 | int TensorBoardLogger::add_scalar(const string &tag, int step, float value) { 69 | return add_scalar(tag, step, static_cast(value)); 70 | } 71 | 72 | int TensorBoardLogger::add_image(const string &tag, int step, 73 | const string &encoded_image, int height, 74 | int width, int channel, 75 | const string &display_name, 76 | const string &description) { 77 | auto *meta = new SummaryMetadata(); 78 | meta->set_display_name(display_name.empty() ? tag : display_name); 79 | meta->set_summary_description(description); 80 | 81 | auto *image = new Summary::Image(); 82 | image->set_height(height); 83 | image->set_width(width); 84 | image->set_colorspace(channel); 85 | image->set_encoded_image_string(encoded_image); 86 | 87 | auto *summary = new Summary(); 88 | auto *v = summary->add_value(); 89 | v->set_tag(tag); 90 | v->set_allocated_image(image); 91 | v->set_allocated_metadata(meta); 92 | return add_event(step, summary); 93 | } 94 | 95 | int TensorBoardLogger::add_images( 96 | const std::string &tag, int step, 97 | const std::vector &encoded_images, int height, int width, 98 | const std::string &display_name, const std::string &description) { 99 | auto *plugin_data = new SummaryMetadata::PluginData(); 100 | plugin_data->set_plugin_name("images"); 101 | auto *meta = new SummaryMetadata(); 102 | meta->set_display_name(display_name.empty() ? tag : display_name); 103 | meta->set_summary_description(description); 104 | meta->set_allocated_plugin_data(plugin_data); 105 | 106 | auto *tensor = new TensorProto(); 107 | tensor->set_dtype(tensorflow::DataType::DT_STRING); 108 | tensor->add_string_val(to_string(width)); 109 | tensor->add_string_val(to_string(height)); 110 | for (const auto &image : encoded_images) tensor->add_string_val(image); 111 | 112 | auto *summary = new Summary(); 113 | auto *v = summary->add_value(); 114 | v->set_tag(tag); 115 | v->set_allocated_tensor(tensor); 116 | v->set_allocated_metadata(meta); 117 | 118 | return add_event(step, summary); 119 | } 120 | 121 | void TensorBoardLogger::flusher() 122 | { 123 | auto period = std::chrono::seconds(options.flush_period_s_); 124 | auto next_flush_time = std::chrono::high_resolution_clock::now() + period; 125 | 126 | while (!stop) 127 | { 128 | if (std::chrono::high_resolution_clock::now() < next_flush_time) { 129 | std::this_thread::sleep_for(std::chrono::seconds(1)); 130 | continue; 131 | } 132 | 133 | std::lock_guard lock{file_object_mtx}; 134 | ofs_->flush(); 135 | next_flush_time = std::chrono::high_resolution_clock::now() + period; 136 | } 137 | } 138 | 139 | int TensorBoardLogger::add_audio(const string &tag, int step, 140 | const string &encoded_audio, float sample_rate, 141 | int num_channels, int length_frame, 142 | const string &content_type, 143 | const string &display_name, 144 | const string &description) { 145 | auto *meta = new SummaryMetadata(); 146 | meta->set_display_name(display_name.empty() ? tag : display_name); 147 | meta->set_summary_description(description); 148 | 149 | auto *audio = new Summary::Audio(); 150 | audio->set_sample_rate(sample_rate); 151 | audio->set_num_channels(num_channels); 152 | audio->set_length_frames(length_frame); 153 | audio->set_encoded_audio_string(encoded_audio); 154 | audio->set_content_type(content_type); 155 | 156 | auto *summary = new Summary(); 157 | auto *v = summary->add_value(); 158 | v->set_tag(tag); 159 | v->set_allocated_audio(audio); 160 | v->set_allocated_metadata(meta); 161 | return add_event(step, summary); 162 | } 163 | 164 | int TensorBoardLogger::add_text(const string &tag, int step, const char *text) { 165 | auto *plugin_data = new SummaryMetadata::PluginData(); 166 | plugin_data->set_plugin_name(kTextPluginName); 167 | 168 | auto *meta = new SummaryMetadata(); 169 | meta->set_allocated_plugin_data(plugin_data); 170 | 171 | auto *tensor = new TensorProto(); 172 | tensor->set_dtype(tensorflow::DataType::DT_STRING); 173 | 174 | auto *str_val = tensor->add_string_val(); 175 | *str_val = text; 176 | 177 | auto *summary = new Summary(); 178 | auto *v = summary->add_value(); 179 | v->set_tag(tag); 180 | v->set_allocated_tensor(tensor); 181 | v->set_allocated_metadata(meta); 182 | 183 | return add_event(step, summary); 184 | } 185 | 186 | int TensorBoardLogger::add_embedding(const std::string &tensor_name, 187 | const std::string &tensordata_path, 188 | const std::string &metadata_path, 189 | const std::vector &tensor_shape, 190 | int step) { 191 | auto *plugin_data = new SummaryMetadata::PluginData(); 192 | plugin_data->set_plugin_name(kProjectorPluginName); 193 | auto *meta = new SummaryMetadata(); 194 | meta->set_allocated_plugin_data(plugin_data); 195 | 196 | const auto &filename = log_dir_ + kProjectorConfigFile; 197 | auto *conf = new ProjectorConfig(); 198 | 199 | // parse possibly existing config file 200 | ifstream fin(filename); 201 | if (fin.is_open()) { 202 | ostringstream ss; 203 | ss << fin.rdbuf(); 204 | TextFormat::ParseFromString(ss.str(), conf); 205 | fin.close(); 206 | } 207 | 208 | auto *embedding = conf->add_embeddings(); 209 | embedding->set_tensor_name(tensor_name); 210 | embedding->set_tensor_path(tensordata_path); 211 | if (metadata_path != "") { 212 | embedding->set_metadata_path(metadata_path); 213 | } 214 | if (tensor_shape.size() > 0) { 215 | for (auto shape : tensor_shape) embedding->add_tensor_shape(shape); 216 | } 217 | 218 | // `conf` and `embedding` will be deleted by ProjectorConfig destructor 219 | 220 | ofstream fout(filename); 221 | string content; 222 | TextFormat::PrintToString(*conf, &content); 223 | fout << content; 224 | fout.close(); 225 | 226 | // Following line is just to add plugin and does not hold any meaning 227 | auto *summary = new Summary(); 228 | auto *v = summary->add_value(); 229 | v->set_tag("embedding"); 230 | v->set_allocated_metadata(meta); 231 | 232 | return add_event(step, summary); 233 | } 234 | 235 | int TensorBoardLogger::add_embedding( 236 | const std::string &tensor_name, 237 | const std::vector> &tensor, 238 | const std::string &tensordata_filename, 239 | const std::vector &metadata, 240 | const std::string &metadata_filename, int step) { 241 | ofstream binary_tensor_file(log_dir_ + tensordata_filename, std::ios::binary); 242 | if (!binary_tensor_file.is_open()) { 243 | throw std::runtime_error("failed to open binary tensor file " + 244 | log_dir_ + tensordata_filename); 245 | } 246 | 247 | for (const auto &vec : tensor) { 248 | binary_tensor_file.write(reinterpret_cast(vec.data()), 249 | vec.size() * sizeof(float)); 250 | } 251 | binary_tensor_file.close(); 252 | if (metadata.size() > 0) { 253 | if (metadata.size() != tensor.size()) { 254 | throw std::runtime_error("tensor size != metadata size"); 255 | } 256 | ofstream metadata_file(log_dir_ + metadata_filename); 257 | if (!metadata_file.is_open()) { 258 | throw std::runtime_error("failed to open metadata file " + 259 | log_dir_ + metadata_filename); 260 | } 261 | for (const auto &meta : metadata) metadata_file << meta << endl; 262 | metadata_file.close(); 263 | } 264 | vector tensor_shape; 265 | tensor_shape.push_back(tensor.size()); 266 | tensor_shape.push_back(tensor[0].size()); 267 | return add_embedding(tensor_name, tensordata_filename, metadata_filename, 268 | tensor_shape, step); 269 | } 270 | 271 | int TensorBoardLogger::add_embedding(const std::string &tensor_name, 272 | const float *tensor, 273 | const std::vector &tensor_shape, 274 | const std::string &tensordata_filename, 275 | const std::vector &metadata, 276 | const std::string &metadata_filename, 277 | int step) { 278 | ofstream binary_tensor_file(log_dir_ + tensordata_filename, std::ios::binary); 279 | if (!binary_tensor_file.is_open()) { 280 | throw std::runtime_error("failed to open binary tensor file " + 281 | log_dir_ + tensordata_filename); 282 | } 283 | 284 | uint32_t num_elements = 1; 285 | for (auto shape : tensor_shape) num_elements *= shape; 286 | binary_tensor_file.write(reinterpret_cast(tensor), 287 | num_elements * sizeof(float)); 288 | binary_tensor_file.close(); 289 | if (metadata.size() > 0) { 290 | if (metadata.size() != tensor_shape[0]) { 291 | throw std::runtime_error("tensor size != metadata size"); 292 | } 293 | ofstream metadata_file(log_dir_ + metadata_filename); 294 | if (!metadata_file.is_open()) { 295 | throw std::runtime_error("failed to open metadata file " + 296 | log_dir_ + metadata_filename); 297 | } 298 | for (const auto &meta : metadata) metadata_file << meta << endl; 299 | metadata_file.close(); 300 | } 301 | return add_embedding(tensor_name, tensordata_filename, metadata_filename, 302 | tensor_shape, step); 303 | } 304 | 305 | int TensorBoardLogger::add_event(int64_t step, Summary *summary) { 306 | Event event; 307 | double wall_time = time(nullptr); 308 | event.set_wall_time(wall_time); 309 | event.set_step(step); 310 | event.set_allocated_summary(summary); 311 | return write(event); 312 | } 313 | 314 | int TensorBoardLogger::write(Event &event) { 315 | string buf; 316 | event.SerializeToString(&buf); 317 | auto buf_len = static_cast(buf.size()); 318 | uint32_t len_crc = 319 | masked_crc32c((char *)&buf_len, sizeof(buf_len)); // NOLINT 320 | uint32_t data_crc = masked_crc32c(buf.c_str(), buf.size()); 321 | 322 | std::lock_guard lock{file_object_mtx}; 323 | 324 | ofs_->write((char *)&buf_len, sizeof(buf_len)); // NOLINT 325 | ofs_->write((char *)&len_crc, sizeof(len_crc)); // NOLINT 326 | ofs_->write(buf.c_str(), buf.size()); 327 | ofs_->write((char *)&data_crc, sizeof(data_crc)); // NOLINT 328 | 329 | if (queue_size++ > options.max_queue_size_) { 330 | ofs_->flush(); 331 | queue_size = 0; 332 | } 333 | 334 | return 0; 335 | } 336 | 337 | string get_parent_dir(const string &path) { 338 | auto last_slash_pos = path.find_last_of("/\\"); 339 | if (last_slash_pos == string::npos) { 340 | return "./"; 341 | } 342 | return path.substr(0, last_slash_pos + 1); 343 | } 344 | 345 | string get_basename(const string &path) { 346 | auto last_slash_pos = path.find_last_of("/\\"); 347 | if (last_slash_pos == string::npos) { 348 | return path; 349 | } 350 | return path.substr(last_slash_pos + 1); 351 | } 352 | -------------------------------------------------------------------------------- /tests/test_tensorboard_logger.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include "tensorboard_logger.h" 8 | 9 | using namespace std; 10 | 11 | string read_binary_file(const string& filename) { 12 | ostringstream ss; 13 | ifstream fin(filename, ios::binary); 14 | if (!fin) { 15 | std::cerr << "failed to open file " << filename << std::endl; 16 | return ""; 17 | } 18 | ss << fin.rdbuf(); 19 | fin.close(); 20 | return ss.str(); 21 | } 22 | 23 | int test_log_scalar(TensorBoardLogger& logger) { 24 | cout << "test log scalar" << endl; 25 | default_random_engine generator; 26 | normal_distribution default_distribution(0, 1.0); 27 | for (int i = 0; i < 10; ++i) { 28 | logger.add_scalar("scalar", i, default_distribution(generator)); 29 | } 30 | 31 | return 0; 32 | } 33 | 34 | int test_log_histogram(TensorBoardLogger& logger) { 35 | cout << "test log histogram" << endl; 36 | default_random_engine generator; 37 | for (int i = 0; i < 10; ++i) { 38 | normal_distribution distribution(i * 0.1, 1.0); 39 | vector values; 40 | for (int j = 0; j < 10000; ++j) 41 | values.push_back(distribution(generator)); 42 | logger.add_histogram("histogram", i, values); 43 | } 44 | 45 | return 0; 46 | } 47 | 48 | int test_log_image(TensorBoardLogger& logger) { 49 | cout << "test log image" << endl; 50 | // read images 51 | auto image1 = read_binary_file("./assets/text.png"); 52 | auto image2 = read_binary_file("./assets/audio.png"); 53 | 54 | // add single image 55 | logger.add_image("TensorBoard Text Plugin", 1, image1, 1864, 822, 3, 56 | "TensorBoard", "Text"); 57 | logger.add_image("TensorBoard Audo Plugin", 1, image2, 1766, 814, 3, 58 | "TensorBoard", "Audio"); 59 | 60 | // add multiple images 61 | // FIXME This seems doesn't work anymore. 62 | // logger.add_images( 63 | // "Multiple Images", 1, {image1, image2}, 1502, 632, "test", "not 64 | // working"); 65 | 66 | return 0; 67 | } 68 | 69 | int test_log_audio(TensorBoardLogger& logger) { 70 | cout << "test log audio" << endl; 71 | auto audio = read_binary_file("./assets/file_example_WAV_1MG.wav"); 72 | logger.add_audio("Audio Sample", 1, audio, 8000, 2, 8000 * 16 * 2 * 33, 73 | "audio/wav", "Impact Moderato", 74 | "https://file-examples.com/index.php/sample-audio-files/" 75 | "sample-wav-download/"); 76 | 77 | return 0; 78 | } 79 | 80 | int test_log_text(TensorBoardLogger& logger) { 81 | cout << "test log text" << endl; 82 | logger.add_text("Text Sample", 1, "Hello World"); 83 | 84 | return 0; 85 | } 86 | 87 | int test_log_embedding(TensorBoardLogger& logger) { 88 | cout << "test log embedding" << endl; 89 | // test add embedding 90 | logger.add_embedding("vocab", "../assets/vecs.tsv", "../assets/meta.tsv"); 91 | logger.add_embedding("another vocab without labels", "../assets/vecs.tsv"); 92 | 93 | // test add binary embedding 94 | vector> tensor; 95 | string line; 96 | ifstream vec_file("assets/vecs.tsv"); 97 | uint32_t num_elements = 1; 98 | while (getline(vec_file, line)) { 99 | istringstream values(line); 100 | vector vec; 101 | copy(istream_iterator(values), istream_iterator(), 102 | back_inserter(vec)); 103 | num_elements += vec.size(); 104 | tensor.push_back(vec); 105 | } 106 | vec_file.close(); 107 | 108 | vector meta; 109 | ifstream meta_file("assets/meta.tsv"); 110 | while (getline(meta_file, line)) { 111 | meta.push_back(line); 112 | } 113 | meta_file.close(); 114 | logger.add_embedding("binary tensor", tensor, "tensor.bin", meta, 115 | "binary_tensor.tsv"); 116 | 117 | // test tensor stored as 1d array 118 | float* tensor_1d = new float[num_elements]; 119 | for (size_t i = 0; i < tensor.size(); i++) { 120 | const auto& vec = tensor[i]; 121 | memcpy(tensor_1d + i * vec.size(), vec.data(), 122 | vec.size() * sizeof(float)); 123 | } 124 | vector tensor_shape; 125 | tensor_shape.push_back(tensor.size()); 126 | tensor_shape.push_back(tensor[0].size()); 127 | logger.add_embedding("binary tensor 1d", tensor_1d, tensor_shape, 128 | "tensor_1d.bin", meta, "binary_tensor_1d.tsv"); 129 | delete[] tensor_1d; 130 | 131 | return 0; 132 | } 133 | 134 | int test_log(const char* log_file) { 135 | TensorBoardLogger logger(log_file); 136 | 137 | test_log_scalar(logger); 138 | test_log_histogram(logger); 139 | test_log_image(logger); 140 | test_log_audio(logger); 141 | test_log_text(logger); 142 | test_log_embedding(logger); 143 | 144 | return 0; 145 | } 146 | 147 | int main(int argc, char* argv[]) { 148 | GOOGLE_PROTOBUF_VERIFY_VERSION; 149 | 150 | int ret = test_log("./demo/tfevents.pb"); 151 | assert(ret == 0); 152 | 153 | // Optional: Delete all global objects allocated by libprotobuf. 154 | google::protobuf::ShutdownProtobufLibrary(); 155 | 156 | return 0; 157 | } 158 | --------------------------------------------------------------------------------